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

网页爬取时Python错误处理及谷歌天气动态爬取问题排查

谷歌天气爬虫问题修复与优化方案

问题原因

  1. 代码拼写错误:classs_ 应为 class_,多写了一个s
  2. 元素定位失效:谷歌天气页面的HTML结构可能已更新,原class选择器无法匹配到温度元素
  3. 固定城市无法动态切换:原代码硬编码了伦敦,无法查询其他城市

修复优化后的代码

import requests 
from bs4 import BeautifulSoup 
from urllib.parse import quote

headers = {'User-Agent' :'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'}

# 动态输入要查询的城市
city = input("请输入要查询的城市名:")
# 对城市名URL编码,兼容中文等特殊字符
encoded_city = quote(city)
# 拼接查询URL
url = f'https://www.google.com/search?q=weather+{encoded_city}'

# 发送HTTP请求
response = requests.get(url, headers=headers) 
# 解析HTML内容
soup = BeautifulSoup(response.content, 'lxml')

# 通过唯一ID定位温度元素(比class更稳定,避免页面结构变更)
temperature_element = soup.find('span', id='wob_tm')

# 输出结果
if temperature_element:
    print(f"{city} 当前温度:{temperature_element.text}℃")
else:
    print("未获取到温度信息,请检查城市名是否正确或网络连接状态")

关键修改说明

  • 修正了原代码中classs_的拼写错误,同时改用ID定位温度元素,因为ID在页面中是唯一的,比class定位更不容易受页面更新影响
  • 新增动态输入功能,使用input()获取用户输入的城市名,并通过quote()对城市名进行URL编码,确保中文、特殊字符能正常请求
  • 添加结果判断逻辑,避免空输出时无提示,提升用户体验

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 13:32:48