Python xpath不是来自xpath的信息

2024-06-17 09:36:09 发布

您现在位置:Python中文网/ 问答频道 /正文

不管怎样,我正在为一个机器人抓取一个网站;我不是太有经验的xpath和现在我可以得到一些信息,但从网站上,我爬行有指南(如视频游戏指南)(这是一个游戏),我想得到标题的指南,但它没有输出任何东西;我来解释我的代码:

name = input("> ")

page = requests.get("http://www.mobafire.com/league-of-legends/champions")
tree = html.fromstring(page.content)

for index, champ in enumerate(champ_list):
    if name == champ:
        y = tree.xpath(".//*[@id='browse-build']/a[{}]/@href".format(index + 1))
        print(y)


guide = requests.get("http://www.mobafire.com/league-of-legends/champion/ashe-13")
builds = html.fromstring(guide.content)
print(builds)

for title in builds.xpath(".//*[@id='browse-build']/table/tbody/tr[1]/td/text()"):
    print(title)

好的,它从输入中搜索一个列表,并从所说的列表中提取一个链接,该链接将位于guide变量上;从那以后,我想爬第一个指南的标题,但它没有输出任何东西。我得到一个状态码200,所以我知道一切都是好的网址和。我试着把这个嵌套起来:

guide = requests.get("http://www.mobafire.com/league-of-legends/champion/ashe-13")
builds = html.fromstring(guide.content)
print(builds)

for title in builds.xpath(".//*[@id='browse-build']/table/tbody/tr[1]/td/text()"):
    print(title)

在上面的for循环中,但是它也没有做任何事情;从字面上说,它只是完成了程序;在那里你可以看到我获取信息的网站,就这样;我不知道什么是正确的方法,如果有什么我应该补充请告诉我。谢谢你的帮助


Tags: comhttpforgettitle网站www指南
2条回答

如注释中所述,id必须是唯一的。这些建筑中的第一个起作用。代码实际上不包含tbody这一事实可以解释为什么第二个不包含

>>> for item in builds.xpath(""".//table[@class='browse-table']/tr[1]/td/text()"""):
...     item
...     
'Season 7 Guides'

>>> for item in builds.xpath(""".//table[@class='browse-table']/tbody/tr[1]/td/text()"""):
...     item
... 

我不知道这是否提供了一个指向所需结果的路径,但是,因为您没有指定它们

站点已定义命名空间(xmlns=)http://www.w3.org/1999/xhtml"). 必须在这些xpath处添加名称空间。 有关更多信息,请访问此。 Xml Namespace breaking my xpath!

相关问题 更多 >