Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中xpath查询与web中xpath查询的区别_Python_Xpath - Fatal编程技术网

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

python中xpath查询与web中xpath查询的区别,python,xpath,Python,Xpath,我试图重复某个足球队的实际队员。 我注意到,在维基百科中,属于该团队的玩家具有相同的格式。 这种格式有4-6张表格,2张是一线队球员,其余的是租借球员或年轻球员等。。。 当使用在线工具使用XPath查询来查询Wikipedia页面时,我得到了我想要的结果,但是当我将其与Python lxml.html库和请求库一起使用时,而不是将玩家的表视为4-6个表,它将其视为一个表元素,这使得仅提取一线队玩家非常头疼 以下是我的python代码: def create_team_ontology(ontol

我试图重复某个足球队的实际队员。 我注意到,在维基百科中,属于该团队的玩家具有相同的格式。 这种格式有4-6张表格,2张是一线队球员,其余的是租借球员或年轻球员等。。。 当使用在线工具使用XPath查询来查询Wikipedia页面时,我得到了我想要的结果,但是当我将其与Python lxml.html库和请求库一起使用时,而不是将玩家的表视为4-6个表,它将其视为一个表元素,这使得仅提取一线队玩家非常头疼

以下是我的python代码:

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)
这里是一个阿森纳维基页面的例子。 在源文件中,很容易检查每个表是否是不同的元素。 但是我的俱乐部球员列表包含上面页面中球员类别下的所有球员href

这是我在web上运行的代码,使用inspect然后ctrl+f
//表[3]/tbody//tr[position()>1]//td[4]///span/a/@href

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

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名球员

/wiki/Bernd_Leno

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

/wiki/Kieran_Tierney

/wiki/Sokratis_Papastathopoulos

/wiki/Dani_Ceballos

...

您可以发布返回XPATH查询所需内容的代码吗?@Jortega是的,我已编辑,请查看我已编辑的python代码和wiki链接,以明确它是同一个查询。重复?忘了在我的另一个话题中说我已经用你的答案解决了。谢谢