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

如何通过Selenium提取页面温度数值?代码问题求助

解决Selenium爬虫提取温度数值的问题

你的代码存在几个关键问题导致无法提取温度数值,以下是修正方案:

问题梳理

  • 调用clean_text时未传入目标文本,反而传了: ,函数没有可处理的内容
  • split语句存在语法错误(引号未闭合),且未提取分割后的目标部分
  • clean_text函数无返回值,处理结果无法传递出来
  • main函数最终返回原始文本,未使用清洗后的结果

修正后的完整代码

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
import time

service = Service('/usr/local/Caskroom/chromedriver/118.0.5993.70/chromedriver-mac-x64/chromedriver')

def get_driver():
    # Set options to make browsing easier
    options = webdriver.ChromeOptions()
    options.add_argument("disable-infobars")
    options.add_argument("start-maximized")
    options.add_argument("disable-dev-shm-usage")
    options.add_argument("no-sandbox")
    options.add_experimental_option("excludeSwitches",
                                    ["enable-automation"])
    options.add_argument("disable-blink-features=AutomationControlled")

    driver = webdriver.Chrome(service=service, options=options)
    driver.get("https://automated.pythonanywhere.com")
    return driver

def clean_text(text):
    """Extract only the temperature from text"""
    # 按冒号分割文本,取第二部分并去除前后空格
    output = text.split(":")[1].strip()
    return output

def main():
    driver = get_driver()
    time.sleep(2)
    element = driver.find_element(by="xpath", value="/html/body/div[1]/div/h1[2]")
    # 将页面获取的文本传入清洗函数
    temperature = clean_text(element.text)
    driver.quit()  # 关闭浏览器释放资源
    return temperature

print(main())

关键修改说明

  1. 修复clean_text函数:

    • 修正split语法错误,闭合引号
    • 使用split(":")将文本按冒号分割成列表,取索引为1的元素(即温度部分)
    • 用strip()去除温度值前后的空格
    • 添加return output将处理后的温度值返回
  2. 修正main函数:

    • 将element.text传入clean_text函数,获取清洗后的温度值
    • 调用driver.quit()关闭浏览器,避免资源占用
    • 返回清洗后的温度值而非原始文本

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 03:32:54