2013-07-13 77 views
1

我想提取字WHITE在去下面的HTML提取串上scrapy

<p class="current">(WHITE)</p> 

我使用python-scrapy,它是唯一可能的提取使用XPath。使用Chrome時,我得到的XPath:

//*[@id="addToCart_pdp"]/div[3]/div[1]/p 

使用scrapy我得到

hxs.select('//*[@id="addToCart_pdp"]/div[3]/div[1]/p') 
>> [<HtmlXPathSelector xpath='//*[@id="addToCart_pdp"]/div[3]/div[1]/p' data=u'<p class="current"></p>'>] 

,但不能從這個得到了這個詞白色。

回答

0

select方法HtmlXPathSelector實例返回XPathSelectorList對象 - 基本上它是一個Python的列表XPathSelector對象(幾個附加的方法)。

爲了得到從HtmlXPathSelector對象的文本,你應該改變你的XPath來獲取text()並調用extract()方法:

text = hxs.select('//*[@id="addToCart_pdp"]/div[3]/div[1]/p/text()').extract()[0] 

希望有所幫助。

+0

這不是問題所在。我嘗試了這些組合。我認爲問題在於HTML的生成方式不同,scrapy會下載該頁面,當我在瀏覽器上閱讀該內容時。 – zeferino

+0

好吧,我只是回答你問過的問題。然後,提供您嘗試從中刪除的網址。 – alecxe

0

嘗試下面幾行:

from scrapy.selector import Selector 

那麼你的請求回調函數內(函數名稱將是解析蜘蛛內)添加以下兩行:

sel = Selector(response) 
print sel.xpath("//p[@class='current']//text()").extract() 

這應該讓想你要。