我有一個基本的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