如何传递额外的参数/值以及start_url以便在CrawSpider中使用?

时间:2015-05-26 23:20:51

标签: python scrapy

所以我在看这个问题:Pass extra values along with urls to scrapy spider

这解决了我的部分问题。我基本上有一个长数组,如:

(身份证,国家,网址)......

使用start_requests,我成功地传递了ID和国家/地区作为项目以及我正在解析的其他项目。

mapping = [(001, USA, url1), etc. etc.]
def start_requests(self):
        for url, ID, country in self.mapping:
            yield Request(url, callback=self.parse_items, meta={'country': country, 'ID': ID})

但是,当我使用Crawlspider时,我的代码不起作用。它会跳过规则,并且不会比第一页进一步解析。

规则=(规则(LxmlLinkExtractor(restrict_xpaths =' // [@name ="& lid = pagination-next"]')     ,callback =" parse_items",follow = True),     )

def parse_start_url(self, response):
    return self.parse_items(response)

def parse_items(self, response):
    country = response.meta['country']
    id = response.meta['id']

    items = []
    item['country'] = country
    item['id'] = id
    item['item1'] = response.xpath(...).extract()
    item['item2'] = response.xpath(...).extract()

...
...

我的问题是如何保留我的初始映射元组的附加ID并遵循Crawlspider规则来浏览这些网站?它刮擦FIRST页面没问题,但无法抓取。

我还应该说,没有start_requests,只有start_urls,它没有问题,但当然我不能在我的生活中找出如何标记' country'并且' id'在抓取时与这些网址相关联。

0 个答案:

没有答案