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

Python使用Selenium、BeautifulSoup解析网页温度数据的问题

解决方案

问题1:列表与整数比较触发TypeError

把温度存成列表后,直接拿整个列表和整数比较必然报错——列表是容器类型,不能直接和单个整数做数值比较。必须先从列表里取出实际的温度值,再进行后续处理。

错误示例:

temp_list = [67]
if temp_list >= 90:  # 直接用列表和整数比较,触发TypeError
    print("1:temp:90")

修正方式:

temp_list = [67]
temp = temp_list[0]  # 取出列表中的单个温度值
if isinstance(temp, str):
    temp = int(temp)  # 若为字符串则转成整数

问题2:字符串比较逻辑错误

字符串比较是按字符的ASCII码顺序执行的,比如"70"的第一个字符"7"ASCII码大于"100"的第一个字符"1",就会出现"70"≥"100"的错误判断。解决核心是把提取到的字符串温度转成**整数(或浮点数)**再做数值比较。

示例代码(结合Selenium和BeautifulSoup):

import re
from selenium import webdriver
from bs4 import BeautifulSoup

# 初始化浏览器并获取页面源码
driver = webdriver.Chrome()
driver.get("目标网页URL")
page_source = driver.page_source
soup = BeautifulSoup(page_source, "html.parser")

# 提取温度字符串(示例:假设温度在class为temp的span标签中)
temp_str = soup.find("span", class_="temp").text
# 用正则提取纯数字部分(过滤℃、空格等冗余内容)
match = re.search(r'\d+', temp_str)
if match:
    temp = int(match.group())  # 转换为整数类型
    # 按阈值输出指定格式内容
    if temp >= 90:
        print(f"1:temp:{temp}")
    else:
        print(f"0:temp:{temp}")
driver.quit()

核心处理步骤总结

  • 提取温度时,确保拿到单个数值内容,而非列表或带冗余字符的字符串
  • 必须将温度转换为**数值类型(int/float)**后再进行阈值比较
  • 根据比较结果输出对应格式的内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 12:00:07