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
相关产品推荐
相关产品推荐

