我目前的scrapy蜘蛛根据需要从网站上提取产品名称,但将每个start_url的提取放在一个单独的['product']
列表中。我希望所有start_url提取都放在一个列表中(对于每个相应的类类型:产品,价格等),这样我就可以在将来操作提取时从列表中调用每个产品标题。
这是我现在的蜘蛛:
from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector
from proj.items import projItem
class siteSpider(BaseSpider):
name = "newSpider"
allowed_domains = ["http://www.sample.url/"]
start_urls = [
"http://sample1.url",
"http://sample2.url"
]
def parse(self, response):
hxs = HtmlXPathSelector(response)
items = []
item = FlecheNoireItem()
item ["product"] = hxs.select('//h2/a[contains(@class,"next_prev")]/text()').extract()
items.append(item)
return items
答案 0 :(得分:0)
你想在哪里进行操作?如果你想要一个可以在整个蜘蛛中使用的通用列表,你可以使用:
class siteSpider(BaseSpider):
...
generic_dict = {'product': [], 'price': [], 'etc': []}
...
def parse(self, response):
...
self.generic_dict['product'].append(hxs.select(...))
...
def manipulations(self):
...manipulations here...
return self.generic_dict
您拥有所有这些不同列表的原因是因为对于每个start_urls
网址,scrapy会调用一个新的parse
函数。因此,它每次都会重新初始化您的items
列表。