![](/img/trans.png)
[英]Scraping data from website that refreshes every 10 minutes in python
[英]Selenium Python Pull Data from Dynamic Table that refreshes every 5 seconds
我正在嘗試從每 5 秒刷新一次的實時表/儀表板中提取數據。 因為它每 5 秒刷新一次,所以它給了我不完整的記錄[我認為從第 1 行開始直到它刷新]。 有沒有辦法解決這個問題,我可以禁用自動刷新一段時間,可能是 15 秒?
您可以使用請求並獲取頁面,然后數據就完整了。
import requests
import time
while True:
url = "insert url here"
page = requests.get(url)
# Parse data
time.sleep(5)
從評論中,您有幾種方法。 由於您無法分享您的網站,我能做的最好的事情就是描述您需要做什么以及我如何讓您的等效網站正常工作。
這兩種方法都使用http://www.emojitracker.com/作為示例站點。
方法 1 - 在網絡層獲取數據:
對於提供的示例站點,我可以看到我有一個名為rankings
的條目,如下所示:
HEADERS
選項卡描述了您需要的數據。 對於這個站點,沒有身份驗證,沒有什么特別的,我不需要發送任何有效負載。 這只是需要的 API 和方法:
Request URL: http://www.emojitracker.com/api/rankings
Request Method: GET
把它扔進pyhton再簡單不過了:
import requests
response = requests.get("http://www.emojitracker.com/api/rankings")
data = response.json()
for line in data:
print(line['id'])
print(line['score'])
這會從 json 響應中打印出分數和 ID。 這是我們調試時的樣子:
方法 2 - 破解 javascript
准備好后 - 轉到控制台選項卡並鍵入this.stop()
。 在您提供的站點上,這會停止更新調用。
這應該會給你足夠的時間來獲取你的數據。
從這里開始,您有兩種選擇可以讓您的數據再次運行。
driver.refresh()
查看 JS,它在何處暫停(從上面的步驟中),以及我發現的一些嘗試和錯誤:
this.startRawScoreStreaming()
它做這個輸出
application.js:90 Subscribing to score stream (raw)
ƒ (event) {
return incrementScore(event.data);
}
頁面再次開始流式傳輸。
最后,要在 selenium 中運行這些 JS 片段 - 您使用.execute_script
driver.execute_script('this.stop()')
## do your stuff
driver.execute_script('this.startRawScoreStreaming()')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.