1

我当前的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
4

1 回答 1

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_urlsurl,scrapy 都会调用一个新parse函数。因此,它items每次都会重新初始化您的列表。

于 2013-05-11T09:17:06.217 回答