ha-multiscrape

ha-multiscrape

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

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

MultiscrapeHome Assistant自定义组件网页抓取传感器Github开源项目

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传感器的大部分属性都适用于此组件。

<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安装量

通过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会理解这个字符串需要在服务调用后作为模板处理。 如果有人有更好的解决方案,请告诉我!

要调用这些服

编辑推荐精选

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

热门AI工具AI办公办公工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

模型训练热门AI工具内容创作智能问答AI开发讯飞星火大模型多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

热门AI工具生产力协作转型TraeAI IDE
咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

AI助手热门AI工具AI创作AI辅助写作讯飞绘文内容运营个性化文章多平台分发
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

Hunyuan3D-2

Hunyuan3D-2

高分辨率纹理 3D 资产生成

Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。

3FS

3FS

一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。

3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。

下拉加载更多