Scrapy成功但不会输出任何信息?

时间:2014-11-28 20:15:37

标签: python terminal scrapy output

我已经在这个蜘蛛上取得了很大的进展 - 我已经习惯了编码并且正在享受它的每一分钟。但是,正如我在学习大部分编程时所解决的问题。这是我当前的错误:

我的蜘蛛在终端窗口中显示了我想要的所有数据。当我去输出时,没有任何东西出现。这是我的代码。

import re
import json
from urlparse import urlparse


from scrapy.selector import Selector
try:
    from scrapy.spider import Spider
except:
    from scrapy.spider import BaseSpider as Spider
from scrapy.utils.response import get_base_url
from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.linkextractors import LinkExtractor
from scrapy.selector import HtmlXPathSelector
from database.items import databaseItem

from scrapy.log import *

class CommonSpider(CrawlSpider):
    name = 'fenders.py'
    allowed_domains = ['usedprice.com']
    start_urls = ['http://www.usedprice.com/items/guitars-musical-instruments/fender/?ob=model_asc#results']

    rules = (

        Rule(LinkExtractor(allow=( )), callback='parse_item'),
    )


    def parse_item(self, response):
        hxs = HtmlXPathSelector(response)
        item = []
        data = hxs.select('//tr[@class="oddItemColor baseText"]')
        tmpNextPage = hxs.select('//div[@class="baseText blue"]/span[@id="pnLink"]/a/@href').extract()
        for attr in data:
        #item = RowItem()
        instrInfo = attr.select('//td[@class="itemResult"]/text()').extract()
        print "Instrument Info: ", instrInfo
        yield instrInfo

1 个答案:

答案 0 :(得分:0)

正如JoeLinux所说,你正在产生一个字符串,而不是返回该项目。如果您主要使用本教程,那么您可能有一个" items.py"文件someplace(可能是其他名称),你定义的项目 - 它似乎被称为" RowItem()"。在这里你有几个领域,或者只有一个领域。

您需要做的是弄清楚如何将数据存储在项目中。因此,做一个粗略的假设,你可能希望RowItem()包含一个名为instrInfo的字段。所以你的items.py文件可能包含这样的内容:

class RowItem(scrapy.Item):
    instrInfo = scrapy.Field()

然后你的蜘蛛应该包括:

item = RowItem()

data = data = hxs.select('//tr[@class="oddItemColor baseText"]')
for attr in data:
    instrInfo = attr.select('//td[@class="itemResult"]/text()').extract()
    item['instrInfo'].append = instrInfo
return item

这会将项目发送到您的管道进行处理。

正如我所说,关于你正在尝试做什么以及你的信息格式的一些重要假设,但希望这可以让你开始。

另外,打印功能可能不是必需的。当项目返回时,它会在蜘蛛运行时显示在终端(或日志)中。

祝你好运!