2015-02-08 260 views
1

我怎麼能得到這個使用這個工作:Scrapy蜘蛛Xpath的選擇

蜘蛛

for sel in response: 
     item = DmozItem() 
     item['title'] = sel.xpath("//td[@class='nblu tabcontent']/a/big/text()").extract() 
     item['link'] = sel.xpath("//td[@class='nblu tabcontent']/a/@href").extract() 
     yield item 

,而不是使用這樣的:

for sel in response.xpath("//td[@class='nblu tabcontent']"): 
     item = DmozItem() 
     item['title'] = sel.xpath("a/big/text()").extract() 
     item['link'] = sel.xpath("a/@href").extract() 
     yield item 

第一個顯然行不通尋找一種替代方案,以第一代碼的形式與第二代代碼做同樣的事情。

感謝,查理

+2

第二個代碼段出了什麼問題?對不起,但我不明白這個問題。謝謝。 – alecxe 2015-02-08 03:04:22

+0

同意@alecxe您的問題令人困惑,但請注意,在第一種情況下,具有多個空格的@ class ='nblu tabcontent''不等同於具有一個空格的'@ class ='nblu tabcontent''。 – kjhughes 2015-02-08 03:08:57

+0

道歉,額外的空間是錯字。記住@alecxe,mysql沒有足夠的parametres問題你的答案,再次面對同樣的問題,如果我dint使用for循環 – CharlieC 2015-02-08 16:05:37

回答

0

其實,你可以如下

item = DmozItem() 
item['title'] = response.xpath("//td[@class='nblu tabcontent']/a/big/text()").extract() 
item['link'] = response.xpath("//td[@class='nblu tabcontent']/a/@href").extract() 
yield item 
0

使用XPath功能contains()直接編碼。

//td[contains(@class, 'nblu') and contains(@class, 'tabcontent')] 
+0

@CharlieC是否有幫助? – 2015-04-20 16:25:25