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

为何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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 11:20:35