实时抓取网页数据(Chrome开发者控制台中的网络选项卡(例如)(图))
优采云 发布时间: 2022-01-15 17:18实时抓取网页数据(Chrome开发者控制台中的网络选项卡(例如)(图))
问题描述
我尝试抓取此页面的航班数,-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:
[0]
看源码也显示为0,明白BeautifulSoup为什么也返回0了。
有谁知道获得当前值的任何其他方法?
推荐答案
您的方法的问题是页面首先加载视图,然后执行定期请求以刷新页面。如果您查看 Chrome 开发者控制台中的网络选项卡(例如),您会看到右边的 ,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:
{
"full_count": 11879,
"version": 4,
"afefdca": [
"A86AB5",
56.4288,
-56.0721,
233,
38000,
420,
"0000",
"T-F5M",
"B763",
"N641UA",
1473852497,
"LHR",
"ORD",
"UA929",
0,
0,
"UAL929",
],
...
"aff19d9": [
"A12F78",
56.3235,
-49.3597,
251,
36000,
436,
"0000",
"F-EST",
"B752",
"N176AA",
1473852497,
"DUB",
"JFK",
"AA291",
0,
0,
"AAL291",
],
"stats": {
"total": {
"ads-b": 8521,
"mlat": 2045,
"faa": 598,
"flarm": 152,
"estimated": 464
},
"visible": {
"ads-b": 0,
"mlat": 0,
"faa": 6,
"flarm": 0,
"estimated": 3
}
}
}
我不确定这个 API 是否受到任何保护,但我似乎可以使用 curl 访问它而没有任何问题。
更多信息: