我试图抓取此网页的航班数量 https://www.flightradar24.com/56.16,-49.51
该数字每 8 秒更新一次。
这是我用 BeautifulSoup 尝试的:
import requests
from bs4 import BeautifulSoup
import time
r=requests.get("https://www.flightradar24.com/56.16,-49.51")
c=r.content
soup=BeautifulSoup(c,"html.parser")
value=soup.find_all("span",{"class":"choiceValue"})
print(value)
但这总是返回 0:
[<span class="choiceValue" id="menuPlanesValue">0</span>]
查看源代码也显示 0,所以我明白为什么 BeautifulSoup 也返回 0。
任何人都知道任何其他方法来获取当前值?
原文由 multigoodverse 发布,翻译遵循 CC BY-SA 4.0 许可协议
您的方法的问题在于页面首先加载视图,然后执行定期请求以刷新页面。如果您查看 Chrome 开发人员控制台中的网络选项卡(例如),您将看到对 https://data-live.flightradar24.com/zones/fcgi/feed.js?bounds=59.09,52.64 的请求 ,-58.77,-47.71&faa=1&mlat=1&flarm=1&adsb=1&gnd=1&air=1&vehicles=1&estimated=1&maxage=7200&gliders=1&stats=1
响应是常规的 json:
我不确定这个 API 是否以任何方式受到保护,但似乎我可以使用 curl 毫无问题地访问它。
更多信息: