【问题标题】:scrape data from URL into pandas从 URL 抓取数据到 pandas
【发布时间】:2019-06-22 02:31:58
【问题描述】:

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

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

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

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

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

提前致谢!

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    4. 然后在设置中找到resultsHubUrl

    5. 此属性在setUpSocket 中使用。
    6. setUpSocketIndividualResultsStream.jsRaseStreams.js 中使用。

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

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

    【讨论】:

      【解决方案2】:

      在抓取生成的 HTML 之前,您实际上需要在浏览器引擎中渲染 JS。你试过https://github.com/scrapinghub/splashhttps://github.com/miyakogi/pyppeteerhttps://www.npmjs.com/package/spa-crawler吗?您还可以尝试在加载与您相关的数据时检查页面(F12 -> Networking)(我想来自一个restful api),然后使用curlrequests从命令行进行相同的调用python库。

      【讨论】:

        猜你喜欢
        • 2019-05-16
        • 2020-09-16
        • 1970-01-01
        • 2021-11-22
        • 1970-01-01
        • 1970-01-01
        • 2021-10-09
        • 2017-02-15
        • 2020-08-20
        相关资源
        最近更新 更多