XPath不返回内容

时间:2017-05-05 16:02:22

标签: python xpath

我正在尝试使用Python 3从Result中提取“总标记”。网页显示在image,从这里,我正在尝试提取数据' 515 ”。内容的XPath(来自Firebug)显示为:

/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>
...

如何从表格中提取总标记“ 515 ”? 提前感谢您的任何帮助!

2 个答案:

答案 0 :(得分:2)

我会使用前面提到的&#34; Total Marks&#34;标签来自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

答案 1 :(得分:1)

由于这里没有真正好用的id,我会使用以下内容:

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