[英]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.