【问题标题】:Accessing Hovertext with html使用 html 访问 Hovertext
【发布时间】:2017-11-14 22:42:44
【问题描述】:

我正在尝试访问此站点(底部)图形点上的悬停文本:

http://matchhistory.na.leagueoflegends.com/en/#match-details/TRLH1/1002200043?gameHash=b98e62c1bcc887e4&tab=overview

我有完整的网站 html,但我无法找到悬停文本中显示的值。检查一个点时可以看到的只有 x 和 y 值,它们是这些值的转换版本。可以通过从悬停文本中获取的手动输入来确定映射,但这违背了查看 html 的目的。此外,映射会随着每场比赛历史的变化而变化,因此在大量比赛中这样做是不可行的。

有没有办法解决这个问题?

谢谢

【问题讨论】:

  • 很有可能是通过 JavaScript 或 CSS 的 content 属性注入的。您可以通过右键单击开发人员工具中的元素并选择:hover 来调试悬停状态。然后你可以准确地看到文本来自哪里:)
  • 我更新了我的答案,wbc,只是想确保你已经看到它。
  • 谢谢你的好建议!

标签: python html graph web-scraping hover


【解决方案1】:

说明

该网页上的几乎所有内容都是通过 JavaScript 通过 JSON 加载的。我们甚至不必请求原始页面。但是,您必须通过物品 ID、神秘物品等重新拼凑页面,这不会太难,因为您可以请求类似于我们获取物品的方式。

所以,我浏览了检查中的 network 选项卡,我注意到它加载了以下 JSON 格式的 URL:

https://acs.leagueoflegends.com/v1/stats/game/TRLH1/1002200043?gameHash=b98e62c1bcc887e4

如果您注意到,有一个 gameHash 和 id(类似于您刚刚发送给我的链接)。鉴于您获取所有依赖的 JSON 文件,此页面包含重建它所需的所有内容。

处理 JSON

您可以在 Python 中使用 json.loads 来加载它,但我推荐的一个很棒的工具是:

https://jsonformatter.curiousconcept.com/

您将 JSON 复制并粘贴到那里,它将帮助您理解数据结构。

获取项目

网页通过 JSON 文件加载所有这些信息:

https://ddragon.leagueoflegends.com/cdn/7.10.1/data/en_US/item.json

它包含有关游戏中每个项目的所有信息和工具提示。您可以通过以下方式访问您想要的项目:theirJson['data']['1001']。在本例中,页面文件名上的每个图像都是 id(或 1001)。

例如,对于'Boots of Speed'

import requests, json

itemJson = json.loads(requests.get('https://ddragon.leagueoflegends.com/cdn/7.10.1/data/en_US/item.json').text)
print(itemJson['data']['1001'])

另一种选择:硒

硒可以用于此。你应该查一下。它已被移植到多种编程语言中,其中一种是 Python。它可能在这里按您的意愿工作,但我真诚地认为 JSON 方法(如上所述)虽然有点复杂,但执行速度会更快(因为速度,根据您的帖子,似乎是一个重要因素)。

【讨论】:

  • 感谢您的深入回答!到目前为止,我一直在使用 selenium 进行工作,但我在这部分遇到了麻烦。你的 JSON 指令看起来很有希望,我明天第一件事就试试看
  • 跟进,这非常适合我想要的网站。感谢您的帮助
  • 嘿,如果您可以标记为解决方案并进行投票,那将有很大帮助。谢谢。
猜你喜欢
  • 1970-01-01
  • 2017-01-27
  • 1970-01-01
  • 2014-03-23
  • 2017-10-15
  • 1970-01-01
  • 2021-08-28
  • 2023-04-11
  • 1970-01-01
相关资源
最近更新 更多