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

如何在WeatherUnderground爬虫中切换至公制单位获取数据?

解决WeatherUnderground爬虫切换公制单位的方案

核心思路:爬取数据前用Selenium模拟人工操作完成单位切换,后续直接抓取公制数据,省掉字符串转单位的麻烦。

具体操作步骤

  • 启动浏览器打开目标页面
  • 找到页面上的设置入口(比如右上角的齿轮图标),点击进入设置界面
  • 定位到公制单位选项(一般标注为"Metric"或"公制"),点击选择
  • 确认保存设置(部分页面需要点击保存按钮)
  • 等页面刷新后,再执行你原本的爬取逻辑

示例代码(Python)

假设页面的设置按钮CSS选择器是button.settings-icon,公制选项是label.metric-option,参考代码如下:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 初始化Chrome浏览器
driver = webdriver.Chrome()
driver.get("https://www.wunderground.com/your-target-location")

# 等待设置按钮加载完成并点击
settings_button = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.CSS_SELECTOR, "button.settings-icon"))
)
settings_button.click()

# 等待公制选项出现并选择
metric_option = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.CSS_SELECTOR, "label.metric-option"))
)
metric_option.click()

# 点击保存设置(如果页面有这个按钮)
save_button = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.CSS_SELECTOR, "button.save-btn"))
)
save_button.click()

# 等待页面刷新,确认单位切换完成(可以通过等待某个公制单位元素出现,或者URL变化)
WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.CSS_SELECTOR, ".temp-c"))
)

# 执行你原本的爬取逻辑,比如抓取温度
current_temp = driver.find_element(By.CSS_SELECTOR, ".current-temp-value").text
# 写入TXT文件
with open("weather_data.txt", "a", encoding="utf-8") as f:
    f.write(f"当前温度: {current_temp}\n")

# 关闭浏览器
driver.quit()

关键注意点

  • 不同页面的元素选择器可能不一样,你需要用浏览器开发者工具(F12)确认实际的CSS选择器
  • 必须用显式等待(WebDriverWait),避免页面未加载完全导致元素找不到
  • 如果网站会保存设置到Cookie,后续爬取可以加载保存的Cookie,不用每次都切换单位

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 13:12:12