Scrape Sensor


The scrape sensor platform is scraping information from websites. The sensor loads a HTML page and gives you the option to search and split out a value. As this is not a full-blown web scraper like scrapy, it will most likely only work with simple webpages and it can be time-consuming to get the right section.

To enable this sensor, add the following lines to your configuration.yaml file:

# Example configuration.yaml entry
sensor:
  - platform: scrape
    resource: https://home-assistant.io
    select: ".current-version h1"

Configuration variables:

  • resource (Required): The URL to the website that contains the value.
  • select (Required): Defines the HTML tag to search for. Check Beautifulsoup’s CSS selectors for details.
  • name (Optional): Name of the sensor.
  • unit_of_measurement (Optional): Defines the units of measurement of the sensor, if any.

Examples

In this section you find some real life examples of how to use this sensor. There is also a Jupyter notebook available for this example to give you a bit more insight.

Home Assistant

The current release Home Assistant is published on https://home-assistant.io/

sensor:
# Example configuration.yaml entry
  - platform: scrape
    resource: https://home-assistant.io
    name: Release
    select: ".current-version h1"
    value_template: '{{ value.split(":")[1] }}'

Available implementations

Get the counter for all our implementations from the Component overview page.

# Example configuration.yaml entry
sensor:
  - platform: scrape
    resource: https://home-assistant.io/components/
    name: Home Assistant impl.
    select: 'a[href="#all"]'
    value_template: '{{ value.split("(")[1].split(")")[0] }}'

Get a value out of a tag

The German Federal Office for Radiation protection (Bundesamt für Strahlenschutz) is publishing various details about optical radiation including an UV index. This example is getting the index for a region in Germany.

sensor:
# Example configuration.yaml entry
  - platform: scrape
    resource: http://www.bfs.de/DE/themen/opt/uv/uv-index/prognose/prognose_node.html
    name: Coast Ostsee
    select: 'p:nth-of-type(19)'
    unit_of_measurement: 'UV Index'

IFTTT status

If you make heavy use of the IFTTT web service for your automations and are curious about the status of IFTTT then you can display the current state of IFTTT in your frontend.

sensor:
# Example configuration.yaml entry
  - platform: scrape
    resource: http://status.ifttt.com/
    name: IFTTT status
    select: '.component-status'