无法解析来自不同表格的`th`标签和`td`标签的数据

时间:2017-12-23 21:37:05

标签: python python-3.x xpath web-scraping lxml

我使用xpath在python中编写了一个脚本来解析来自网页的表格数据。执行时,它能够完美地解析表中的数据。我无法解决的唯一问题是解析table header,表示th标记。如果我使用css选择器做同样的事情,我可以使用.cssselect("th,td")但是在xpath的情况下我被卡住了。任何有关如何解析th标签数据的帮助也将受到高度赞赏。

以下脚本能够从th标记内的数据中获取不同表格中的所有内容:

import requests
from lxml.html import fromstring

response = requests.get("https://fantasy.premierleague.com/player-list/")
tree = fromstring(response.text)
for row in tree.xpath("//*[@class='ism-table']//tr"):
    tab_d = row.xpath('.//td/text()')
    print(tab_d)

2 个答案:

答案 0 :(得分:1)

我不确定我是否理解您的观点,但如果您想使用单个XPath同时获取thtd个节点,则可以尝试替换

tab_d = row.xpath('.//td/text()')

tab_d = row.xpath('.//*[name()=("th" or "td")]/text()')

答案 1 :(得分:1)

更改

.//td/text()

.//*[self::td or self::th]/text()

也包括th元素。

请注意,假设tdth都是tr上下文节点的直接子节点是合理的,因此您可以进一步简化XPath:

*[self::td or self::th]/text()