2014-02-18 38 views
0

以下代碼返回一個空列表;python lxml.html:爲雅虎財務返回空列表

import lxml.html 
url = 'http://finance.yahoo.com/q/pr?s=AYR+Profile' 
content = lxml.html.parse(url) 
sector = content.xpath('//*[@id="yfncsumtab"]/tbody/tr[2]/td[1]/table[2]/tbody/tr/td/table/tbody/tr[2]/td[2]/a') 
print sector 
[] 

我過Chrome的控制檯上檢查..

$x('//*[@id="yfncsumtab"]/tbody/tr[2]/td[1]/table[2]/tbody/tr/td/table/tbody/tr[2]/td[2]/a')[0].text 

和我得到的輸出;

'Services' 

我在哪裏搞亂了?

+0

我不知道這是否會修復它,但在你的控制檯命令你''TR [3]/TD [2]/a'',在你的代碼中你有'tr [2]/td [2]/a''。 – Moritz

+0

@Moritz我已經改變了,現在 – richie

回答

1

在由lxml解析的html代碼中沒有<tbody>元素,因此您必須在xpath表達式中忽略它們。此外,在末尾添加text()提取鏈接的內容:

sector = content.xpath('//*[@id="yfncsumtab"]/tr[2]/td[1]/table[2]/tr/td/table/tr[2]/td[2]/a/text()') 
+0

謝謝!這工作! – richie