首页 > 解决方案 > 从 URL 抓取数据到 pandas

问题描述

我正在尝试从 URL 中抓取日期。数据不在 HTML 表格中,因此 pandas.read_html() 没有提取它。

网址是: https ://www.athlinks.com/event/1015/results/Event/638761/Course/988506/Results

我想获得的数据是过去 5k 比赛的表格性别、年龄、时间(名称并不重要)。数据一次在网页 50 中呈现大约 25 页。

它为 UI 使用各种 JavaScript 框架(node.js、react)。使用 chrome 浏览器中的“运行内容”插件发现了这一点。

这是我想获得这些数据的真正原因。我是一名新跑步者,下周将参加这个 5k 比赛,并想探索过去面孔的一些分布统计数据(这是一年一度的比赛,数据可以追溯到 1980 年代)。

提前致谢!

标签: pythonpandasparsingweb-scrapingpython-requests

解决方案


数据来自socket.io,有python包。我是怎么找到的?

  1. 如果您在浏览器中打开网络面板并选择 XHR 过滤器,您会发现类似 https://results-hub.athlinks.com/socket.io/?EIO=3&transport=polling&t=MYOPtCN&sid=5C1HrIXd0GRFLf0KAZZi

  2. 查看内容,这是我们需要的。

  3. 幸运的是,这个网站有一个源地图。现在您可以转到更多工具 -> 搜索并找到该域。

  4. 然后resultsHubUrl在设置里找。

  5. 这个属性里面用到了setUpSocket
  6. setUpSocket用在里面IndividualResultsStream.jsRaseStreams.js

现在您可以按下CMD + P并深入查看这些文件。

所以... 我花了大约五分钟才找到它。你可以继续!现在您拥有所有必要的工具。随意使用断点并阅读有关 chrome 开发人员工具的更多信息。


推荐阅读