首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >python中的xpath查询与web中的xpath查询的区别

python中的xpath查询与web中的xpath查询的区别
EN

Stack Overflow用户
提问于 2020-04-28 20:50:05
回答 1查看 39关注 0票数 0

我正在尝试迭代某个足球队的实际团队成员。我注意到,在维基百科中,属于球队的球员具有相同的格式。在这种格式下有4-6张桌子,其中2张是一线队球员,其余的是租借球员或年轻球员等。当使用在线工具通过XPath查询查询维基百科页面时,我得到了我想要的结果,但是当我在Python lxml.html库和请求库中使用它,而不是将球员表看作4-6个表时,它将其视为一个表元素,这使得只提取一线队球员令人头疼。

下面是我的python代码:

代码语言:javascript
运行
复制
def create_team_ontology(ontology_graph,team_url,team_name):
     res = requests.get(team_url)
     doc = lxml.html.fromstring(res.content)
     print(team_url)
     club_players = doc.xpath("//table[3]/tbody//tr[position() > 1]//td[4]//span/a/@href")
     for player_suffix_url in club_players:
        print(player_suffix_url+'\n')
        player_url = wiki_prefix + player_suffix_url
        get_player_info(ontology_graph,player_url,team_name)

这是一个阿森纳https://en.wikipedia.org/wiki/Arsenal维基页面的例子。在源文件中,很容易检查每个表是不同的元素。但是我的俱乐部球员列表包含了上面页面中球员类别下的所有球员href。

这是我在web上运行的代码,使用inspect then ctrl+f //table3/tbody//trposition() > 1//td4//span/a/@href

EN

回答 1

Stack Overflow用户

发布于 2020-04-29 08:31:45

您的代码几乎可以正常工作。如果我使用我在另一个主题中发布的XPath:

代码语言:javascript
运行
复制
from lxml import html
import requests
res = requests.get('https://en.wikipedia.org/wiki/Arsenal_F.C.')
doc = html.fromstring(res.content)
club_players = doc.xpath('//span[@id="Players"]/following::table[1]//span[@class="fn"]//@href')
for player_suffix_url in club_players:
        print(player_suffix_url+'\n')

你可以得到阿森纳一线队的27名球员的网址。

代码语言:javascript
运行
复制
/wiki/Bernd_Leno

/wiki/H%C3%A9ctor_Beller%C3%ADn

/wiki/Kieran_Tierney

/wiki/Sokratis_Papastathopoulos

/wiki/Dani_Ceballos

...
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61480589

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档