与DjangoItem的Scrapy集成产生错误
我正试着用DjangoItem来让自己发痒。当我运行爬行爬行器时,会出现“ExampleDotComItem不支持字段:title”错误。我已经创建了多个项目,并试图让它工作,但总是得到相同的错误。我找到了教程并下载了源代码,运行之后;我得到了同样的错误: 回溯(最近一次呼叫最后一次):与DjangoItem的Scrapy集成产生错误,django,scrapy,Django,Scrapy,我正试着用DjangoItem来让自己发痒。当我运行爬行爬行器时,会出现“ExampleDotComItem不支持字段:title”错误。我已经创建了多个项目,并试图让它工作,但总是得到相同的错误。我找到了教程并下载了源代码,运行之后;我得到了同样的错误: 回溯(最近一次呼叫最后一次): 文件“c:\programdata\anaconda3\lib\site packages\twisted\internet\defer.py”,第654行,在runCallbacks中 current.res
文件“c:\programdata\anaconda3\lib\site packages\twisted\internet\defer.py”,第654行,在runCallbacks中 current.result=回调(current.result,*args,**kw) 文件“C:\Users\A\Desktop\djang1.7-scrapy1.0.3-master\example\u bot\example\u bot\spiders\example.py”,第12行,在parse中 返回ExampleDotComItem(title=title,description=description) 文件“c:\programdata\anaconda3\lib\site packages\scrapy\u djangoitem\u_init\u_.py”,第29行,在init 超级(DjangoItem,self)。init(*args,**kwargs)
文件“c:\programdata\anaconda3\lib\site packages\scrapy\item.py”,第56行,在init self[k]=v
文件“c:\programdata\anaconda3\lib\site packages\scrapy\item.py”,第66行, 在设置项中 (self.类名称,键))键错误:“ExampledToComItem不支持字段:title” 项目结构:
├───django1.7-scrapy1.0.3-master
├───example_bot
│ └───example_bot
│ ├───spiders
│ │ └───__pycache__
│ └───__pycache__
└───example_project
├───app
│ ├───migrations
│ │ └───__pycache__
│ └───__pycache__
└───example_project
└───__pycache__
我的Django型号:
from django.db import models
class ExampleDotCom(models.Model):
title = models.CharField(max_length=255)
description = models.CharField(max_length=255)
def __str__(self):
return self.title
我的“示例”蜘蛛:
Items.py:
from scrapy_djangoitem import DjangoItem
from app.models import ExampleDotCom
class ExampleDotComItem(DjangoItem):
django_model = ExampleDotCom
class ExPipeline(object):
def process_item(self, item, spider):
print(item)
item.save()
return item
import os
import sys
DJANGO_PROJECT_PATH = '/Users/A/DESKTOP/django1.7-scrapy1.0.3-master/example_project'
DJANGO_SETTINGS_MODULE = 'example_project.settings' #Assuming your django application's name is example_project
sys.path.insert(0, DJANGO_PROJECT_PATH)
os.environ['DJANGO_SETTINGS_MODULE'] = DJANGO_SETTINGS_MODULE
BOT_NAME = 'example_bot'
import django
django.setup()
SPIDER_MODULES = ['example_bot.spiders']
ITEM_PIPELINES = {
'example_bot.pipelines.ExPipeline': 1000,
}
管道。py:
from scrapy_djangoitem import DjangoItem
from app.models import ExampleDotCom
class ExampleDotComItem(DjangoItem):
django_model = ExampleDotCom
class ExPipeline(object):
def process_item(self, item, spider):
print(item)
item.save()
return item
import os
import sys
DJANGO_PROJECT_PATH = '/Users/A/DESKTOP/django1.7-scrapy1.0.3-master/example_project'
DJANGO_SETTINGS_MODULE = 'example_project.settings' #Assuming your django application's name is example_project
sys.path.insert(0, DJANGO_PROJECT_PATH)
os.environ['DJANGO_SETTINGS_MODULE'] = DJANGO_SETTINGS_MODULE
BOT_NAME = 'example_bot'
import django
django.setup()
SPIDER_MODULES = ['example_bot.spiders']
ITEM_PIPELINES = {
'example_bot.pipelines.ExPipeline': 1000,
}
设置。py:
from scrapy_djangoitem import DjangoItem
from app.models import ExampleDotCom
class ExampleDotComItem(DjangoItem):
django_model = ExampleDotCom
class ExPipeline(object):
def process_item(self, item, spider):
print(item)
item.save()
return item
import os
import sys
DJANGO_PROJECT_PATH = '/Users/A/DESKTOP/django1.7-scrapy1.0.3-master/example_project'
DJANGO_SETTINGS_MODULE = 'example_project.settings' #Assuming your django application's name is example_project
sys.path.insert(0, DJANGO_PROJECT_PATH)
os.environ['DJANGO_SETTINGS_MODULE'] = DJANGO_SETTINGS_MODULE
BOT_NAME = 'example_bot'
import django
django.setup()
SPIDER_MODULES = ['example_bot.spiders']
ITEM_PIPELINES = {
'example_bot.pipelines.ExPipeline': 1000,
}
你能展示一下你的Django模型吗?这很可能是因为
title
未在ExampleDotCom
模型上定义
如果有,也许您需要运行Django迁移