Scrape sensor improved - scraping multiple values

Thank you for your time and your suggestions.
I had a look and played a bit but given mainly the need to potentially have to deal with the cookie header I decided to continue using the multiscraper that can automatically manage this aspect.
Also thank you for pointing out the limitation of the status length, so I followed your suggestion and created one sensor for each value (I will concatenate in a list later for my needs).
I got everything working still relying on the CSS selector… not sure if this is the right approach for an XML… but it works (of course suggestions about this or how to improve this overall are always welcome - for example see the warning below, even if I made the use of lxml explicit and it should be used by default).

I’m pasting my solution below, if anybody else from Italy lands on this page and need it.

PS:
I’m using the XML approach as it allows me to build a template as a resource and potentially query any day with little effort - other options available from the website and relying on HTML tables are not so immediate.

multiscrape:
  - resource_template: 'https://www.mercatoelettrico.org/It/WebServerDataStore/MGP_Prezzi/{{ as_timestamp(now()) | timestamp_custom("%Y%m%d", True) }}MGPPrezzi.xml'
    scan_interval: 3600
    parser: 'lxml'
    name: 'PUN oggi'
    button:
      unique_id: 'aggiorna_misure_pun_oggi'
      name: 'Aggiorna misure PUN oggi'
    log_response: true
    form_submit:
      submit_once: false
      resource: 'https://www.mercatoelettrico.org/It/Tools/Accessodati.aspx'
      select: '#form1'
      input:
        'ctl00$ContentPlaceHolder1$CBAccetto1': 'on'
        'ctl00$ContentPlaceHolder1$CBAccetto2': 'on'
        'ctl00$ContentPlaceHolder1$Button1': 'Accetto'
      input_filter:
        - 'ctl00$ContentPlaceHolder1$Button2'
        - 'ctl00$vai'
        - 'ctl00$LinkButton2'
        - 'ctl00$LoginButton'
    sensor:
      - select: 'NewDataSet:nth-child(1) > Prezzi:nth-child(2) > PUN:nth-child(4)'
        name: 'PUN oggi 00'
        unique_id: 'pun_oggi_00'
        icon: 'mdi:currency-eur'
        unit_of_measurement: '€/kWh'
        value_template: '{{ value | replace (",", ".") |float | int / 1000}}'
      - select: 'NewDataSet:nth-child(1) > Prezzi:nth-child(3) > PUN:nth-child(4)'
        name: 'PUN oggi 01'
        unique_id: 'pun_oggi_01'
        icon: 'mdi:currency-eur'
        unit_of_measurement: '€/kWh'
        value_template: '{{ value | replace (",", ".") |float | int / 1000}}'
1 Like