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

使用BeautifulSoup提取嵌套span中降水概率数据遇阻求助

解决BeautifulSoup提取嵌套span降水概率的问题

先排查选择器是否匹配正确

你输出--大概率是选择器没定位到目标文本,先核对页面的HTML结构。比如降水概率的嵌套结构可能是这样:

<div class="weather-item">
  <span class="label">降水概率</span>
  <span class="value">
    <span>3%</span>
  </span>
</div>

如果之前用了soup.find('span', class_='value').text,可能因为外层span没有直接文本,拿到的是空值,最终显示--。改成以下方式即可:

  • 用CSS选择器定位最内层span:
    precip_prob = soup.select_one('.value span').text.strip()
    
  • 或者通过find嵌套定位:
    outer_span = soup.find('span', class_='value')
    precip_prob = outer_span.find('span').text.strip() if outer_span else '无数据'
    

确认是否是动态渲染内容

如果静态HTML里根本找不到降水概率的文本,说明数据是JS动态加载的。这时候不用急着上Selenium,优先抓接口:

  1. 打开浏览器开发者工具(F12),切换到「Network」标签,刷新页面。
  2. 筛选「XHR」类型的请求,找到返回天气数据的API接口(通常是带weather、data等关键词的URL)。
  3. 用requests直接请求这个接口,从JSON响应里提取降水概率,比解析HTML高效得多:
    import requests
    response = requests.get("https://xxx.weather-api.com/real-time")
    weather_data = response.json()
    precip_prob = weather_data['current']['precip_probability'] + '%'
    

兜底处理空值

不管哪种方式,都可以加个判断避免输出无效符号:

print(precip_prob if precip_prob else '暂无数据')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 16:22:45