网页爬取时Python错误处理及谷歌天气动态爬取问题排查
谷歌天气爬虫问题修复与优化方案
问题原因
- 代码拼写错误:
classs_应为class_,多写了一个s - 元素定位失效:谷歌天气页面的HTML结构可能已更新,原class选择器无法匹配到温度元素
- 固定城市无法动态切换:原代码硬编码了伦敦,无法查询其他城市
修复优化后的代码
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
相关产品推荐
相关产品推荐

