将数据从URL抓取到熊猫中

时间:2019-01-29 02:26:20

标签: python pandas parsing web-scraping python-requests

我正在尝试从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年代)。

提前谢谢!

2 个答案:

答案 0 :(得分:1)

数据来自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. setUpSocketIndividualResultsStream.js内部使用RaseStreams.js

现在,您可以按CMD + P并深入到这些文件。

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

答案 1 :(得分:0)

在抓取生成的HTML之前,您实际上需要在浏览器引擎中呈现JS。您是否尝试过https://github.com/scrapinghub/splashhttps://github.com/miyakogi/pyppeteerhttps://www.npmjs.com/package/spa-crawler?您还可以尝试在加载与您相关的数据时检查页面(F12->网络)(我想应该是从一个宁静的api),然后使用curl或{ {1}} python库。