多字段网页数据抓取的Home Assistant集成组件
HA Multiscrape是一个Home Assistant自定义组件,能够从单个HTTP请求中抓取多个数据字段。它基于Rest和Scrape传感器,使用CSS选择器提取数据,并将结果作为独立传感器呈现。该组件提供灵活配置,包括表单提交和错误处理等功能,可满足复杂的网页数据抓取需求。
[![GitHub发布][releases-shield]][releases]
![许可证][license-shield]
[![pre-commit][pre-commit-shield]][pre-commit]
[![Black][black-shield]][black]
[![hacs][hacsbadge]][hacs]
[![项目维护][maintenance-shield]][user_profile]
[![请我喝咖啡][buymecoffeebadge]][buymecoffee]
[![Discord][discord-shield]][discord]
[![社区论坛][forum-shield]][forum]
如果您无法抓取所需的值,请启用调试日志和log_response
。这将为您提供大量信息以进行进一步调查。log_response
会将所有响应写入文件。如果您想抓取的值不在BeautifulSoup输出的文件(*-soup.txt)中,Multiscrape将无法抓取它。很可能是通过JavaScript在后台获取的。在这种情况下,您最好的办法是在浏览器的开发者工具中调查网络流量,并尝试找到包含您要查找的值的JSON响应。
如果以上方法都无法解决问题,请使用Home Assistant论坛。我无法为每个人提供个人帮助,除非您确定存在bug,否则请不要创建GitHub问题。 查看wiki获取抓取指南和有关此组件功能的其他详细信息。
您,且仅您自己,对您的抓取活动负责。做个好的(网络)公民。设置合理的scan_interval
时间,在抓取之前寻求明确许可,并遵守当地和国际法律。尊重网站政策,以道德方式处理数据,注意资源使用,并定期监控您的行为。坚持这些原则以确 保道德和可持续的抓取实践。
这个Home Assistant自定义组件可以通过单个HTTP请求从网页中抓取多个字段(使用CSS选择器),而现有的抓取传感器只能抓取单个字段。抓取的数据会以单独的传感器形式呈现。
该组件基于现有的Rest传感器和Scrape传感器。Rest和Scrape传感器的大部分属性都适用于此组件。
<a href="https://www.buymeacoffee.com/danieldotnl" target="_blank"><img src="https://yellow-cdn.veclightyear.com/87312a0a/cb90dc7d-44d9-4814-8673-edaf3b72a728.png" alt="Buy Me A Coffee" style="height: 51px !important;width: 217px !important;" ></a>
[![hacs][hacsbadge]][hacs]
通过HACS(默认商店)安装或手动安装,将文件复制到新的'custom_components/multiscrape'目录中。
multiscrape: - name: HA抓取器 resource: https://www.home-assistant.io scan_interval: 3600 sensor: - unique_id: ha_latest_version name: 最新版本 select: ".release-date" value_template: "{{ value | trim }}" - unique_id: ha_release_date icon: >- {% if is_state('binary_sensor.ha_version_check', 'on') %} mdi:alarm-light {% else %} mdi:bat {% endif %} name: 发布日期 select: ".release-date" attribute: "title" value_template: "{{ (value.split('released')[1]) }}" binary_sensor: - unique_id: ha_version_check name: 最新版本 == 2021.7.0 select: ".release-date" value_template: '{{ value | trim == "2021.7.0" }}' attributes: - name: 发布说明链接 select: ".release-date" attribute: href
基于最新(预)发布版本。
名称 | 描述 | 必填 | 默认值 | 类型 |
---|---|---|---|---|
name | 集成的名称。 | 否 | 字符串 | |
resource | 用于获取网站的URL或输出URL的模板。当提供resource_template 时不需要。 | 是 | 字符串 | |
resource_template | 渲染后输出URL的模板。仅当未提供resource 时需要。 | 是 | 模板 | |
authentication | 配置HTTP认证。basic 或digest 。与用户名和密码字段一起使用。 | 否 | 字符串 | |
username | 访问URL的用户名。 | 否 | 字符串 | |
password | 访问URL的密码。 | 否 | 字符串 | |
headers | 请求的头部。 | 否 | 模板 - 列表 | |
params | 请求的查询参数。 | 否 | 模板 - 列表 | |
method | 请求的方法。POST 或GET 。 | 否 | GET | 字符串 |
payload | 可选的POST请求负载。 | 否 | 字符串 | |
verify_ssl | 验证端点的SSL证书。 | 否 | True | 布尔值 |
log_response | 记录HTTP响应和BeautifulSoup解析的HTML到文件中。(将写入/config/multiscrape/配置名称) | 否 | False | 布尔值 |
timeout | 定义等待端点数据的最长时间。 | 否 | 10 | 整数 |
scan_interval | 确定请求URL的频率。 | 否 | 60 | 整数 |
parser | 确定与beautifulsoup一起使用的解析器。lxml 或html.parser 。 | 否 | lxml | 字符串 |
list_separator | 与select_list 功能结合使用的分隔符。 | 否 | , | 字符串 |
form_submit | 参见表单提交 | 否 | ||
sensor | 参见传感器 | 否 | 列表 | |
binary_sensor | 参见二进制传感器 | 否 | 列表 | |
button | 参见刷新按钮 | 否 | 列表 |
配置用于抓取数据的传感器。
名称 | 描述 | 必填 | 默认值 | 类型 |
---|---|---|---|---|
unique_id | 将用作entity_id并允许在UI中编辑实体 | 否 | 字符串 | |
name | 传感器的友好名称 | 否 | 字 符串 | |
参见选择器字段 | 是 | |||
attributes | 参见传感器属性 | 否 | 列表 | |
unit_of_measurement | 定义传感器的测量单位 | 否 | 字符串 | |
device_class | 设置传感器或二进制传感器的设备类别 | 否 | 字符串 | |
state_class | 定义传感器的状态类别(如果有)。(measurement, total 或 total_increasing)(不适用于二进制传感器) | 否 | None | 字符串 |
icon | 定义传感器图标或图标模板。选择器的值(或给定value_template时的值)作为模板的输入。对于二进制传感器,该值被解析为布尔值。 | 否 | 字符串/模板 | |
picture | 包含本地图像的路径,并将其设置为实体图片 | 否 | 字符串 | |
force_update | 即使值未更改也发送更新事件。在历史记录中需要有意义的值图表时很有用。 | 否 | False | 布尔值 |
配置手动触发抓取的刷新按钮。
名称 | 描述 | 必填 | 默认值 | 类型 |
---|---|---|---|---|
unique_id | 将用作entity_id并允许在UI中编辑实体 | 否 | 字符串 | |
name | 按钮的友好名称 | 否 | 字符串 |
配置可以通过额外抓取值设置的传感器属性。
名称 | 描述 | 必填 | 默认值 | 类型 |
---|---|---|---|---|
name | 属性的名称(将被转换为小写并用下划线替换空格) | 是 | 字符串 | |
参见选择器字段 | 是 |
配置表单提交功能,使您能够在抓取网站之前提交(登录)表单。有关此功能如何工作的更多详细信息可以在wiki上找到。
名称 | 描述 | 必填 | 默认值 | 类型 |
---|---|---|---|---|
resource | 包含表单的网站URL | 否 | 字符串 | |
select | 用于在HTML中选择表单的CSS选择器。如果省略,则直接提交输入字段。 | 否 | 字符串 | |
input | 一个名称/值字典,将与表单上的输入字段合并 | 否 | 字符串 - 字典 | |
input_filter | 不应与表单一起提交的输入字段列表 | 否 | 字符串 - 列表 | |
submit_once | 仅在启动时提交一次表单,而不是每个扫描间隔都提交 | 否 | False | 布尔值 |
resubmit_on_error | 遇到抓取错误后重新提交表单 | 否 | True | 布尔值 |
variables | 参见表单变量 | 否 | 列表 |
配置将从form_submit
响应中抓取的变量。这些变量可以在当前集成的主配置的value_template
中使用:传感器/属性中的selector
或头部中。一个常见用例是填充X-Login-Token
头部,该头部是登录的结果。
名称 | 描述 | 必填 | 默认值 |
---|