为何requests.get()获取谷歌天气返回西班牙语内容?求解决方案
问题原因
谷歌会根据请求的语言偏好和地区设置返回本地化内容,你的请求未指定英文语言,且未强制温度单位,所以返回了西班牙语内容和摄氏度温度。
解决步骤
1. 指定英文语言请求头
通过headers参数设置Accept-Language为英文(美国地区),让谷歌返回英文内容。
2. 强制使用华氏度
在搜索URL后追加&units=imperial参数,直接获取华氏度温度结果,无需手动转换。
修改后的代码
from bs4 import BeautifulSoup import requests # 追加units=imperial参数强制华氏度,保留原搜索关键词 url = "https://www.google.com/search?q=weather+Nissan+Stadium+Nashville+TN+Thursday+December+29+2022+8:15+PM&units=imperial" # 设置请求头,指定优先返回英文内容 headers = { 'Accept-Language': 'en-US,en;q=0.9' } page = requests.get(url, headers=headers) soup = BeautifulSoup(page.content, "html.parser") # 定位天气信息容器(注:谷歌网页class可能会更新,若失效需重新检查元素) weather_info = soup.find("div", class_="tAd8D") if weather_info: # 按行拆分文本并整理格式 content_lines = weather_info.text.split('\n') print(f"{content_lines[0]}") print(f"{content_lines[1]}") # 调整温度行的显示格式 temp_line = content_lines[2].replace('High', 'Maximum').replace('Low', 'Minimum') print(temp_line) else: print("未找到目标天气信息")
补充说明
- 如果后续谷歌网页的HTML结构或class名称更新,需要重新检查页面元素,调整
find方法的定位参数。 - 若不想依赖URL参数,也可以爬取摄氏度后用公式手动转换:
华氏度 = 摄氏度 × 9/5 + 32
内容的提问来源于stack exchange,提问作者DrFox
相关产品推荐
相关产品推荐

