项目未到达管道

2024-10-05 11:03:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我是python和scrapy的新手。我没有在管道中获取项目数据。在csv中没有写入任何内容。错误是

DmozSpider' object has no attribute getitem

如有任何帮助,我们将不胜感激:

蜘蛛锉

import scrapy
import sys
import os
from tutorial.items import TutorialItem
from pprint import pprint
class DmozSpider(scrapy.Spider):
    name = "myspider"
    allowed_domains = ["www.xyz.co.id"]
    start_urls = ["http://www.xyz.co.id/search?q=abc"]

    def parse(self, response):
        var = response.xpath("//a[@class='img']/@href").extract()[0]
        item = TutorialItem()
        item['title'] = var
        yield item

管道文件

import csv

class TutorialPipeline(object):

    def __init__(self):
        self.csvwriter = csv.writer(open('items.csv', 'wb'))

    def process_item(self, domain, item):
        print item['title']
        self.csvwriter.writerow([item['title']])
        return item

项目文件

import scrapy

class TutorialItem(scrapy.Item):
    title = scrapy.Field()
    link = scrapy.Field()
    desc = scrapy.Field()
    price = scrapy.Field()

设置文件

         ITEM_PIPELINES = {
       'tutorial.pipelines.TutorialPipeline': 300,
   }

Tags: 文件csv项目importselffield管道object
2条回答

管道方法process_item()的定义不正确。错误在指定的参数self, domain, item中。documentation中的官方描述是:

process_item(self, item, spider)

将类TutorialPipeline中的方法相应地更改为:

def process_item(self, item, spider):
    print item['title']
    self.csvwriter.writerow([item['title']])
    return item

试试看项目.get('title')而不是项['title']

相关问题 更多 >

    热门问题