我有一个基本的scrapy脚本,在做了以下内容:Scrapy回调函数
- Visting网站
使用规则来获取所有的网页:
rules = ( Rule(LinkExtractor(allow=(), restrict_xpaths=('//*[@id="pagination_top"]/a',)), callback="parse_page", follow= True), )
在每一个页面,获取产品页面的所有链接:
def parse_page(self, response): for href in response.css("#prod_category > ul > li > a::attr('href')"): url = response.urljoin(href.extract()) yield scrapy.Request(url, callback=self.parse_dir_contents)
并访问每个产品页面以获取有关产品的详细信息。然后,我从不同的链接获取其它详细信息
def parse_dir_contents(self, response): # select xpath here print '________________________BEGIN PRODUCT________________________' item = detailedItem() item['title'] = sites.xpath('//*[@id="product-name"]/text()').extract() # get url_2 from this page request = scrapy.Request(url_2, callback=self.parse_detailed_contents) request.meta['item'] = item yield request
最后下面是获取有关产品
我想这最后parse_detailed_contents详细信息的功能,在那里我有一个问题
def parse_detailed_contents(self, response): item = response.meta['item'] sel = Selector(response) sites = sel.xpath('//*[@id="prod-details"]') print '________________________GETTING DETAILS________________________' item['prod_details'] = sites.xpath('//*[@id="prod-details"]/div/text()').extract() return item
问题是我的脚本重新为第一个链接转变项目['prod_details'],但不会为后续链接返回任何项目。
这是因为所有产品的url_2传递相同吗?
有人请帮忙。提前感谢!
你找到控制台日志的任何错误,同时运行的蜘蛛? – jithin
谢谢@jithin没有错误...脚本打印每个产品的“BEGIN PRODUCT”,但只打印第一个产品的“GETTING DETAILS”..所有后续产品页面只返回“BEGIN PRODUCT' – user6055239