python - 从 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 年代)。
提前致谢!
解决方案
数据来自socket.io,有python包。我是怎么找到的?
如果您在浏览器中打开网络面板并选择 XHR 过滤器,您会发现类似 https://results-hub.athlinks.com/socket.io/?EIO=3&transport=polling&t=MYOPtCN&sid=5C1HrIXd0GRFLf0KAZZi
查看内容,这是我们需要的。
幸运的是,这个网站有一个源地图。现在您可以转到更多工具 -> 搜索并找到该域。
然后
resultsHubUrl
在设置里找。- 这个属性里面用到了
setUpSocket
。 - 并
setUpSocket
用在里面IndividualResultsStream.js
和RaseStreams.js
。
现在您可以按下CMD + P
并深入查看这些文件。
所以... 我花了大约五分钟才找到它。你可以继续!现在您拥有所有必要的工具。随意使用断点并阅读有关 chrome 开发人员工具的更多信息。
推荐阅读
- python - xml.etree.ElementTree.ParseError: not well-formed (invalid token): -- 将包含 xml 文件的文件夹转换为 csv 文件时
- excel - Excel中的文本字符串到日期时间转换
- clojure - 为什么 Clojure Spec 会在这里陷入无限循环?
- c++ - 删除无符号整数的二进制补码
- javascript - 如何在 Kendo UI Editor 中创建浏览文件按钮
- java - 为什么 EhCache 在集群时会减慢 Gets?
- javascript - 如何将变量从 js 文件传递到 html 页面?
- java - 双击使 TitledBorder 可编辑
- python - 消除“Y”值缺失或 NAN 的数据点
- android - 如何从 android.support.v7.app.AppCompatActivity 获取 android.support.transition.Transition?