物品未到达管道

时间:2016-04-07 12:59:45

标签: python scrapy

我是python和scrapy的新手。我没有收到项目数据。 csv中没有写任何内容。错误是

  

DmozSpider'对象没有属性 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,
   }

2 个答案:

答案 0 :(得分:1)

管道方法self, domain, item的定义不正确。该错误位于规定的参数process_item(self, item, spider) 中。 docs中的官方说明是:

TutorialPipeline

将班级def process_item(self, item, spider): print item['title'] self.csvwriter.writerow([item['title']]) return item 中的方法改为:

example.root/sub_dir

答案 1 :(得分:0)

尝试item.get('title')而不是item ['title']