簡體   English   中英

從 URL 中抓取數據到 Pandas

[英]scrape data from URL into pandas

我正在嘗試從 URL 中抓取日期。 數據不在 HTML 表中,因此 pandas.read_html() 不會提取它。

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

我想獲得的數據是過去 5000 場比賽的性別、年齡、時間表(名稱並不重要)。 一次在網頁50中呈現大約25頁的數據。

它使用各種 javascript 框架作為 UI(node.js、react)。 使用 chrome 瀏覽器中的“What Runs”插件發現了這一點。

這就是我想要獲取這些數據的真正原因。 我是一名新跑者,下周將參加這個 5k 比賽,並想探索過去面孔的一些分布統計數據(這是一年一度的比賽,數據可以追溯到 1980 年代)。

提前致謝!

數據來自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 開發人員工具的更多信息。

在抓取生成的 HTML 之前,您實際上需要在瀏覽器引擎中呈現 JS。 您是否嘗試過https://github.com/scrapinghub/splashhttps://github.com/miyakogi/pyppeteerhttps://www.npmjs.com/package/spa-crawler 您還可以嘗試在加載與您相關的數據時檢查頁面(F12 -> 網絡)(我想是從一個 restful api),然后使用curlrequests python 庫從命令行進行相同的調用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM