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

Python爬取气象网站温度数据异常及解析器选型咨询

问题修复:提取目标站点温度数据

你的代码直接匹配class="col-md-9"的div标签,该标签是页面右侧全部预报内容的父容器,内部嵌套了所有预报相关的表格、文本、提示信息,因此会返回全量内容而非单独温度数据,直接指定索引无效是因为选中的对象本身就是外层父容器,没有缩小定位范围到温度所在的具体节点。

正确提取逻辑是先定位到核心预报表格,再匹配温度对应的列,参考可运行代码如下:

import requests
from bs4 import BeautifulSoup as bs

url = "http://kktcmeteor.org/tahminler/merkezler?m=ISKELE"
# 增加请求头模拟普通浏览器访问,避免被站点反爬规则拦截
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
}
r = requests.get(url, headers=headers)
r.encoding = "utf-8" # 手动指定编码,避免土耳其语特殊字符乱码
cast = bs(r.content, "lxml")

# 定位到存放预报数据的具体表格,而非整个内容容器
forecast_table = cast.find("table", class_="table table-striped")
temp_result = []
if forecast_table:
    # 跳过表头行,遍历所有数据行
    rows = forecast_table.find_all("tr")[1:]
    for row in rows:
        cols = row.find_all("td")
        if len(cols) >= 3:
            # 第三列对应当地语言标注的温度列,索引稳定不会随页面样式调整偏移
            forecast_date = cols[0].text.strip()
            temperature = cols[2].text.strip()
            temp_result.append((forecast_date, temperature))

# 打印输出多日预报温度
for date, temp in temp_result:
    print(f"预报日期:{date},温度:{temp}")

# 如需提取页面顶部的实时温度,可使用以下逻辑
realtime_temp = cast.find("strong", string=lambda t: "°C" in t if t else False).text.strip()
print(f"当前实时温度:{realtime_temp}")
lxml与html.parser解析器差异及选型规则

两者都是BeautifulSoup支持的HTML解析器,核心差异如下:

  • 性能差异:lxml基于C语言实现,解析速度远高于纯Python实现的html.parser,待解析的页面DOM结构越复杂、内容量越大,性能差距越显著。
  • 容错能力:lxml对非规范HTML的兼容性更强,遇到标签未闭合、嵌套错误、属性缺失等问题时会自动修正DOM结构,解析结果更稳定;html.parser容错能力较弱,解析结构混乱的页面时容易出现节点丢失、层级错位的问题。
  • 依赖要求:html.parser是Python标准库内置组件,安装Python和BeautifulSoup后即可直接使用,无需额外安装依赖;lxml是第三方库,需要单独执行pip install lxml完成安装,在部分无外网权限、受限的运行环境中可能无法部署。
  • 功能差异:lxml同时支持HTML、XML两种格式解析,原生支持XPath语法做节点筛选,复杂提取场景下开发效率更高;html.parser仅支持HTML解析,只能使用BeautifulSoup原生的find/find_all等方法做节点匹配。

选型判断依据:

日常爬虫开发优先选择lxml,解析速度快、容错性好,适配绝大多数页面场景;如果运行环境无法安装第三方依赖,且待解析的页面是结构完全规范的标准HTML,可选择html.parser,无需额外配置更轻便。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 20:09:20