我正在尝试从URL中抓取日期。数据不在HTML表中,因此pandas.read_html()不会将其提取。
URL为: https://www.athlinks.com/event/1015/results/Event/638761/Course/988506/Results
我想获取的数据是过去5k比赛的表性别,年龄,时间(名称不是很重要)。数据一次显示在网页50中,大约25页。
它为UI使用了各种JavaScript框架(node.js,react)。使用chrome浏览器中的“运行方式”广告可以发现这一点。
这是我想要获取此数据的真正原因。我是新手,下周将参加这5k比赛,我想探讨一些过去面孔的分布统计信息(它是年度比赛,数据可以追溯到1980年代)。
提前谢谢!
答案 0 :(得分:1)
数据来自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开发人员工具的更多信息。
答案 1 :(得分:0)
在抓取生成的HTML之前,您实际上需要在浏览器引擎中呈现JS。您是否尝试过https://github.com/scrapinghub/splash,https://github.com/miyakogi/pyppeteer或https://www.npmjs.com/package/spa-crawler?您还可以尝试在加载与您相关的数据时检查页面(F12->网络)(我想应该是从一个宁静的api),然后使用curl
或{ {1}} python库。