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

如何提取网页中由JavaScript动态生成而非静态HTML内置的温度数值

ControlByWeb温度传感器数值提取方案

方案1:直接调用设备原生API(优先推荐)

ControlByWeb全系列设备默认自带结构化状态查询接口,不需要解析前端渲染的页面,是最适合家庭自动化轮询的轻量方案:

  • 设备默认状态接口地址为/state.xml,你可以直接请求http://<设备IP地址>/state.xml获取包含温度在内的所有设备状态数据,返回的XML格式内容中可直接找到三个温度对应的标签字段,你提到的演示设备直接访问http://107.1.170.22:9036/state.xml即可验证数据。
  • 适配Python 2.7的示例代码如下,无需安装额外第三方依赖:
import urllib2
import xml.etree.ElementTree as ET

# 替换为你实际的设备接口地址
device_url = "http://107.1.170.22:9036/state.xml"
response = urllib2.urlopen(device_url)
xml_content = response.read()

root = ET.fromstring(xml_content)
# 标签名可根据实际返回的XML调整,演示设备对应温度标签为temp1、temp2、temp3
temp_1 = root.find("temp1").text
temp_2 = root.find("temp2").text
temp_3 = root.find("temp3").text

print("三个温度分别为:%s、%s、%s" % (temp_1, temp_2, temp_3))

方案2:渲染前端JS获取数值(备选)

如果你的设备型号特殊没有公开状态接口,再使用渲染JS的方式获取页面最终内容,Python 2.7环境下可使用Selenium+PhantomJS实现:

  • 先安装适配Python 2.7的Selenium版本,再下载PhantomJS二进制文件放到系统PATH路径下
  • 示例代码如下:
from selenium import webdriver

driver = webdriver.PhantomJS()
# 替换为你的设备页面地址
driver.get("http://107.1.170.22:9036/")
# 等待JS渲染完成
driver.implicitly_wait(3)
# 选择器可通过浏览器F12元素检查功能获取对应温度元素的id/class属性
temp_1 = driver.find_element_by_css_selector("#temp1").text
temp_2 = driver.find_element_by_css_selector("#temp2").text
temp_3 = driver.find_element_by_css_selector("#temp3").text
driver.quit()

print(temp_1, temp_2, temp_3)

注意事项

Python 2.7已经停止官方维护,后续如果有条件建议升级到Python 3版本,依赖安装、运行效率和安全性都会有明显提升。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 11:15:03