繁体   English   中英

scrapy:新手试图调试代码

[英]scrapy: newbie attempting to debug code

总新手,试图让scrapy从csv读取网址列表并返回csv中的项目。 需要一些帮助来弄清楚我在哪里出错了:蜘蛛代码:

from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector
import random

class incyspider(BaseSpider):
    name = "incyspider"
    def __init__(self):
        super(incyspider, self).__init__()
        domain_name = "incyspider.co.uk"
        f = open("urls.csv")
        start_urls = [url.strip() for url in f.readlines()]
        f.close

    def parse(self, response):
        hxs = HtmlXPathSelector(response)
        sites = hxs.select('//div[@class="Product"]')
        items = []
        for site in sites:
            item['title'] = hxs.select('//div[@class="Name"]/node()').extract()
            item['hlink'] = hxs.select('//div[@class="Price"]/node()').extract()
            item['price'] = hxs.select('//div[@class="Codes"]/node()').extract()
            items.append(item)

        return items

SPIDER = incyspider()

这是items.py代码:

from scrapy.item import Item, Field

class incyspider(Item):
    # define the fields for your item here like:
    # name = Field()
    title = Field()
    hlink = Field()
    price = Field()
    pass

跑步,我正在使用

scrapy crawl incyspider -o items.csv -t csv

我会非常感谢任何指针。

我不太确定,但在快速查看一下你的代码后,我会说至少你需要更换这一行

sites = hxs.select('//div[@class="Product"]')

通过这条线

sites = hxs.select('//div[@class="Product"]').extract() 

作为回答此问题的第一个incyspider ,您的蜘蛛代码缺少incyspider项目类的导入。 此外,您没有创建任何类型的项目实例来存储title / items.append(item) / price信息,因此items.append(item)行可能会抱怨。

由于您的蜘蛛也称为incyspider ,您应该将该项重命名为incyspiderItem ,然后incyspiderItem添加到您的蜘蛛代码中

from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector
import random
from incyspider.items import incyspiderItem 

class incyspider(BaseSpider):
    name = "incyspider"
    def __init__(self):
        super(incyspider, self).__init__()
        domain_name = "incyspider.co.uk"
        f = open("urls.csv")
        start_urls = [url.strip() for url in f.readlines()]
        f.close

    def parse(self, response):
        hxs = HtmlXPathSelector(response)
        sites = hxs.select('//div[@class="Product"]')
        items = []
        for site in sites:
            item = incyspiderItem()
            item['title'] = hxs.select('//div[@class="Name"]/node()').extract()
            item['hlink'] = hxs.select('//div[@class="Price"]/node()').extract()
            item['price'] = hxs.select('//div[@class="Codes"]/node()').extract()
            items.append(item)

        return items

如果我错了,请编辑问题以解释您如何知道代码存在问题,例如:预期输出是否与实际输出不同? 如果是这样,怎么样?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM