2016-06-07 106 views
0

Scrapy,沒有錯誤,蜘蛛爬行

for restaurant in response.xpath('//div[@class="listing"]'): 
 
\t \t 
 
\t \t 
 
\t \t 
 
\t \t 
 
\t \t restaurantItem = RestaurantItem() 
 
\t \t 
 
\t \t restaurantItem['name'] = response.css(".title::text").extract() 
 
\t \t 
 
\t \t 
 
\t \t yield restaurantItem 
 
\t \t 
 
\t \t next_page = response.css(".next > a::attr('href')") 
 
\t \t if next_page: 
 
\t \t url = response.urlJoin(next_page[0].extract()) 
 
\t \t yield scrapy.Request(url, self.parse)

我固定所有的錯誤後關閉,這是給我。現在,我沒有得到任何錯誤。抓取start_url後,蜘蛛就會關閉。 for循環永遠不會被執行。

+0

也許是因爲它沒有在DOM內找到'next_page'? –

+0

它從來沒有達到這一點,我試圖寫一個打印聲明後,它永遠不會進入for循環...並且,它給我沒有錯誤... – panther1

+0

好吧,所以它永遠不會找到你嘗試的'div'達到。給一個鏈接也許或一些html代碼示例 –

回答

0

當你試圖找到一個元素是這樣的:

response.xpath('//div[@class="listing"]') 

你告訴我想找到一個div字面上只已「上市」作爲其類:

<div class="listing"></div> 

但這在DOM中不存在任何地方,發生了以下事情:

<div class="listing someOtherClass"></div> 

要選擇上述元素,您有t告訴該元素包含某個屬性文本,但可以包含更多。在這裏,像這樣:

response.xpath('//div[contains(@class,"listing")]') 
+1

另一種方法是使用CSS選擇器進行這種類的測試,即'response.css('div .listing')' –