2017-05-05 145 views
2

我試圖使用Python 3從Result中提取'Total Marks'。網頁顯示在image中,從這裏我試圖提取數據''。被示出(從螢火蟲)的內容的XPath的爲:XPath不返回內容

/html/body/div/div/div/div[3]/div[1]/div/div[2]/div[2]/table/tbody/tr[1]/td[2]/b 

使用的代碼段是:

summary_data_xpath = '//tbody/tr[1]/td[2]/b/text()' 
data = html_tree.xpath(summary_data_xpath) 
print(data) 

但是我得到的輸出:[]

我使用絕對路徑嘗試(由Firebug給出的XPath)。我也嘗試從'//table'開始參考,但我得到了相同的結果。

兩個表的結構如下:

... 
 
<div> 
 
    <div> 
 
     Upper Table with subject marks 
 
    </div> 
 
    Lower Table with subject marks and division 
 
</div> 
 
...

我如何可以提取總表標記 ''? 在此先感謝您的幫助!

回答

1

我將通過following-sibling axis使用相關的前面的 「佔總分」 的標籤:

import requests 
from lxml.html import fromstring 


url = "http://results.vtu.ac.in/results/result_page.php?usn=3ae13cs089" 

response = requests.get(url, headers={'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.96 Safari/537.36'}) 

root = fromstring(response.content) 
summary_data_xpath = './/td[b = "Total Marks"]/following-sibling::td/b' 
data = root.xpath(summary_data_xpath)[0].text.strip(": ") 
print(data) 

打印515

+0

非常感謝您的回覆瞬間。它像一個魅力。 – Aadarsha

0

由於這裏沒有真正的好ID的使用,我會使用以下命令:

//tr[./td/b/text()="Total Marks"]/td[2]/b 
+0

感謝您的回覆! XPath提取數據。 – Aadarsha