Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用管道时出现Scrapy键错误_Python_Scrapy_Keyerror - Fatal编程技术网

Python 使用管道时出现Scrapy键错误

Python 使用管道时出现Scrapy键错误,python,scrapy,keyerror,Python,Scrapy,Keyerror,有人能解释我为什么会犯这个错误吗?我不明白。我试图通过scrapy管道将提取的数据存储到数据库中,这对另一个项目有效,但现在我遇到以下错误: Traceback (most recent call last): File "/usr/lib/python2.7/dist-packages/twisted/internet/defer.py", line 588, in _runCallbacks current.result = callback(current.re

有人能解释我为什么会犯这个错误吗?我不明白。我试图通过scrapy管道将提取的数据存储到数据库中,这对另一个项目有效,但现在我遇到以下错误:

Traceback (most recent call last):
      File "/usr/lib/python2.7/dist-packages/twisted/internet/defer.py", line 588, in _runCallbacks
        current.result = callback(current.result, *args, **kw)
      File "/home/Darknet/Darknet/pipelines.py", line 11, in process_item
        length = range(len(item['quantity']))
      File "/usr/lib/python2.7/dist-packages/scrapy/item.py", line 56, in __getitem__
        return self._values[key]
    KeyError: 'quantity'
我的管道:

import Darknet
from Darknet.items import DarknetItem
from models import db
from models import BlackMarket


class MysqlPipeline(object):

    def process_item(self, item, spider):

        length = range(len(item['quantity']))
        for x in length:
            record = BlackMarket(product=item['product'][x], quantity=item['quantity'][x], price=item['price'][x])
            db.add(record)
            db.commit()
        return item
我使用此代码段中的项目:

item = DarknetItem()
item['product'] = response.xpath('//div[@class="text oTitle"]/a/text()').extract()
item['price'] = response.xpath('//div[@class="bottom oPrice"]/text()').extract()
item['quantity'] = response.xpath('//div[@class="text oTitle"]/a/text()').extract()
yield item

您在
DarknetItem()
中没有创建任何字段
quantity
,这是什么意思?在items.py文件中,quantity设置为scrapy.Field(),因此我认为这不是问题所在。添加一个可运行的示例,以复制管道中已删除的issueI退货项目。这就解决了问题。您在
DarknetItem()
中没有创建任何字段
quantity
,这是什么意思?在items.py文件中,quantity设置为scrapy.Field(),因此我认为这不是问题所在。添加一个可运行的示例,以复制管道中已删除的issueI退货项目。这就解决了问题。