Scrapy框架学习笔记2—— Scrapy与Django结合

前面也介绍过了Scrapy与Django的设计思想非常相似,因此这个两个结合也是比较容易的。
以下方法在Scrapy 0.18与Django 1.5下面测试是可以用的。

1.首先设置Django的运行环境


在settings.py中添加如下代码:

1
2
3
4
5
6
7
8
def setup_django_environment(path):
import imp, os, sys
from django.core.management import setup_environ
m = imp.load_module('settings', *imp.find_module('settings', [path]))
setup_environ(m)
sys.path.append(os.path.abspath(os.path.join(path, os.path.pardir)))

setup_django_environment("/django/project/path")

注意:如果你的Django项目是用的sqlite数据库的话,那就需要设置为绝对路径,不能使用相对路径。

2.创建django item


首先在Django项目代码中创建一个Django的model,例如:

1
2
3
4
5
from django.db import models
class ScrapyModel(models.Model):
title = models.CharField(max_length=200)
link = models.CharField(max_length=200)
desc = models.TextField()

然后在Scrapy项目中创建一个新的Item,只不过这次我们不再是继承自scrapy.item.Item,而是scrapy.contrib.djangoitem.DjangoItem:

1
2
class Test1DjItem(DjangoItem):
django_model = ScrapyModel

用法与原来的Item相同,只是最后要执行一个save函数来调用django的save方法将数据存入数据库。