Scrapy蜘蛛Xpath的选择

问题描述:

我怎么能得到这个使用这个工作: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

其实,你可以如下

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 

使用XPath功能contains()直接编码。

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

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