You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python BeautifulSoup解析Windguru时span标签无数据问题咨询

问题根因

定位到空标签属于预期内的现象:Windguru站点的实时风速数据并非直接写入初始返回的HTML源码,是浏览器加载完初始页面后,通过JavaScript发起异步请求获取数据,再填充到class为wgs_wind_avg_value的span标签内。
requests库仅能获取初始静态HTML源码,无法执行页面内嵌的JS逻辑,因此抓到的span标签本身就是无内容的空壳。另外贴出的原始代码存在语法错误:try块下的所有代码未做缩进,Python依靠缩进划分代码块,直接运行会触发缩进报错。

可行解决方法
  • 方法1:直接请求站点的数据接口(推荐,效率最高、稳定性最好)
    打开浏览器访问目标站点,按F12调出开发者工具,切换到「网络」面板,筛选Fetch/XHR类型请求,刷新页面后就能找到站点拉取实时数据的后端接口,接口直接返回结构化的JSON数据,不需要额外解析HTML。
    参考实现代码:
import requests

# 接口地址和参数可从开发者工具抓到的实际请求中复制
api_url = "https://www.windguru.cz/int/iapi.php"
req_params = {
    "q": "station_data",
    "id_station": 3303
}
req_headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.67 Safari/537.36',
    'Referer': 'https://www.windguru.cz/station/3303'
}

resp = requests.get(api_url, params=req_params, headers=req_headers)
resp.raise_for_status()
station_data = resp.json()
# 从返回的JSON结构中找到对应平均风速的字段取值即可
avg_wind_speed = station_data.get("wind_avg")
print(avg_wind_speed)
  • 方法2:使用可执行JavaScript的爬虫框架
    如果不想逆向分析接口,可以用playwright、selenium这类工具模拟真实浏览器访问页面,等页面JS执行完成、数据填充到标签后再读取DOM内容,就能拿到span里的风速值。这种方式资源占用远高于直接调用接口,仅适合不想分析接口的场景使用。

注意:爬取站点数据请遵守目标站点的robots协议和相关使用规定,控制请求频率,不要对站点正常运行造成影响。

内容的提问来源于stack exchange,提问作者ganger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 07:57:27