Project Icon

ha-multiscrape

多字段网页数据抓取的Home Assistant集成组件

HA Multiscrape是一个Home Assistant自定义组件,能够从单个HTTP请求中抓取多个数据字段。它基于Rest和Scrape传感器,使用CSS选择器提取数据,并将结果作为独立传感器呈现。该组件提供灵活配置,包括表单提交和错误处理等功能,可满足复杂的网页数据抓取需求。

HA多重抓取

[![GitHub发布][releases-shield]][releases] ![许可证][license-shield]
[![pre-commit][pre-commit-shield]][pre-commit] [![Black][black-shield]][black]
[![hacs][hacsbadge]][hacs] 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时间,在抓取之前寻求明确许可,并遵守当地和国际法律。尊重网站政策,以道德方式处理数据,注意资源使用,并定期监控您的行为。坚持这些原则以确保道德和可持续的抓取实践。

HA MultiScrape自定义组件

这个Home Assistant自定义组件可以通过单个HTTP请求从网页中抓取多个字段(使用CSS选择器),而现有的抓取传感器只能抓取单个字段。抓取的数据会以单独的传感器形式呈现。

该组件基于现有的Rest传感器Scrape传感器。Rest和Scrape传感器的大部分属性都适用于此组件。

Buy Me A Coffee

安装

[![hacs][hacsbadge]][hacs] hacs安装量

通过HACS链接快速安装

通过HACS(默认商店)安装或手动安装,将文件复制到新的'custom_components/multiscrape'目录中。

配置示例(YAML)

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认证。basicdigest。与用户名和密码字段一起使用。字符串
username访问URL的用户名。字符串
password访问URL的密码。字符串
headers请求的头部。模板 - 列表
params请求的查询参数。模板 - 列表
method请求的方法。POSTGETGET字符串
payload可选的POST请求负载。字符串
verify_ssl验证端点的SSL证书。True布尔值
log_response记录HTTP响应和BeautifulSoup解析的HTML到文件中。(将写入/config/multiscrape/配置名称)False布尔值
timeout定义等待端点数据的最长时间。10整数
scan_interval确定请求URL的频率。60整数
parser确定与beautifulsoup一起使用的解析器。lxmlhtml.parserlxml字符串
list_separatorselect_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头部,该头部是登录的结果。

名称描述必填默认值类型
name变量的名称字符串
参见选择器字段

示例:

multiscrape:
- resource: "https://somesiteyouwanttoscrape.com"
  form_submit:
    submit_once: True
    resource: "https://authforsomesiteyouwanttoscrape.com"
    input:
      email: "<email>"
      password: "<password>"
    variables:
    - name: token
      value_template: "{{ ... }}"
  headers:
    X-Login-Token: "{{ token }}"
  sensor: ...

选择器

用于配置抓取选项。

名称描述必填默认值类型
select用于获取属性值的CSS选择器。仅当未提供select_listvalue_template时才需要。字符串/模板
select_list用于多个元素的多个值的CSS选择器,将作为CSV返回。仅当未提供selectvalue_template时才需要。字符串/模板
attribute从选定元素读取的值的属性。字符串
value_template定义应用于从选择器结果(如果提供)或原始页面(如果未提供选择器)提取值的模板字符串/模板
on_error参见错误处理

错误处理

配置在抓取错误(CSS选择器未返回值)情况下应该发生什么。

名称描述必填默认值类型
log确定在抓取错误情况下是否以及如何记录日志。值可以是'false'、'info'、'warning'或'error'。error字符串
value确定在抓取错误情况下传感器/属性应获得的值。值可以是'last',表示值不改变;'none',导致HA在传感器上显示'未知';或'default',将显示指定的默认值。none字符串
default当错误处理值设置为'default'时使用的默认值。字符串

服务

对于每个multiscrape实例,将创建一个服务,以通过自动化触发抓取运行。(对于手动触发,现在可以配置按钮实体。) 这些服务命名为multiscrape.trigger_{integration name}

Multiscrape还提供了get_contentscrape服务。get_content检索您想要抓取的网站内容。它显示的数据与您现在需要启用log_response并打开page_soup.txt文件时看到的相同。 scrape顾名思义就是进行抓取。它抓取网站并提供传感器和属性。

这两个服务接受与您在配置yaml中提供的相同配置(上面描述的内容),但有一个小而重要的注意事项:如果服务输入包含模板,这些模板在调用服务时会被Home Assistant自动解析。对于像resourceselect这样的模板来说没问题,但对于需要应用于抓取数据本身的模板(如value_template),在调用服务时不能解析。因此,您需要稍微修改语法,在中间添加一个!。例如,{{变成{!{%}变成%!}。然后Multiscrape会理解这个字符串需要在服务调用后作为模板处理。 如果有人有更好的解决方案,请告诉我!

要调用这些服

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

白日梦AI

白日梦AI提供专注于AI视频生成的多样化功能,包括文生视频、动态画面和形象生成等,帮助用户快速上手,创造专业级内容。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

讯飞绘镜

讯飞绘镜是一个支持从创意到完整视频创作的智能平台,用户可以快速生成视频素材并创作独特的音乐视频和故事。平台提供多样化的主题和精选作品,帮助用户探索创意灵感。

Project Cover

讯飞文书

讯飞文书依托讯飞星火大模型,为文书写作者提供从素材筹备到稿件撰写及审稿的全程支持。通过录音智记和以稿写稿等功能,满足事务性工作的高频需求,帮助撰稿人节省精力,提高效率,优化工作与生活。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号