Simple Web Scraping with Home Assistant

Поділитися
Вставка
  • Опубліковано 10 лип 2024
  • In this video tutorial we will see how to use the Web Scraping technique with Home Assistant to obtain information from a website to generate a sensor using the Scrape component.
    This will allow us to create sensors with information from a website and thus control prices or values, in addition to detecting changes to receive a notification.
    Automations and templates tutorial: • 8 trucos, con ejemplos...
    PS: He has quite a cold, that's why he sounds quite nasal...
    Chapters:
    00:00 Presentation
    01:13 What is Web Scraping?
    00:33 Home Assistant Scrape Component
    00:43 Captchas and Web Scraping
    01:09 Get the status of a beach
    03:15 Concert ticket notice
    06:00 Price of a product
    07:17 Convert text to number in Home Assistant
    09:38 Save statistics
    10:55 Farewell
  • Наука та технологія

КОМЕНТАРІ • 85

  • @EnricAragorn
    @EnricAragorn 3 місяці тому +1

    Que gustazo haber descubierto tu canal! Un poco de HA para los avanzados!

  • @franciscoromero1869
    @franciscoromero1869 7 місяців тому +7

    Muy interesante. Gracias por compartirlo.

    • @franciscoromero1869
      @franciscoromero1869 7 місяців тому +2

      El canal crece rápidamente y eso me alegra porque tienes muy buen contenido. Ya le he dado utilidad al vídeo. Gracias

  • @juanantonio7155
    @juanantonio7155 7 місяців тому +4

    Me he quedado con la boca abierta... que buen video, que novedoso, pero que.... lo de siempre enhorabuena y muchas gracias...

    • @JorgeMoreno
      @JorgeMoreno 7 місяців тому

      Totalmente de acuerdo. Excelente video, mejor contenido y de gran utilidad!

  • @ferradio6211
    @ferradio6211 7 місяців тому +3

    Contenido práctico, innovador, bien explicado. Cada vez que UA-cam me avisa de un video tuyo me alegras el día. Muchas gracias.

    • @lachozadigital
      @lachozadigital  7 місяців тому +1

      Otro punto a favor de los sábados entonces :)

  • @enriqueronda7239
    @enriqueronda7239 7 місяців тому +1

    Muy buen video. Al grano y sin irte por las ramas y práctico para que lo entendamos todos. Gracias.

  • @pericodelospalotes2426
    @pericodelospalotes2426 7 місяців тому +2

    Hola. Me gusta tu forma de explicar las cosas. Ya tienes un nuevo suscriptor. Mil gracias.

  • @Xesquy
    @Xesquy 7 місяців тому +1

    Un video super interesante que no había visto en otro canal y muy bien explicado, gracias

  • @alrodgir
    @alrodgir 7 місяців тому +1

    Te acabo de descubrir, muy buenos videos y bastante interesantes. #Enhorabuena 👏👏👏
    Suscrito 👍

    • @lachozadigital
      @lachozadigital  7 місяців тому

      Me alegro que te guste, aunque al principio había leído «me acabo de desuscribir» y me he rayado pensado en qué malo tenía el vídeo... Maldita dislexia...
      En 23h, vídeo nuevo ;)

  • @luisinigo5572
    @luisinigo5572 7 місяців тому

    Que bueno, no sabia que podía hacerse eso con Home Assistant.
    Gracias por el vídeo. Ya tienes un suscriptor más!

    • @lachozadigital
      @lachozadigital  7 місяців тому

      Con HA básicamente se puede hacer de todo ;)
      Bienvenido al canal.

    • @luisinigo5572
      @luisinigo5572 5 місяців тому

      @@lachozadigital intenté hacerlo, y con tu ejemplo funciona genial, pero con otras webs no consigo q salga el valor en el sensor. ¿depende de como esté programada la web? Gracias

    • @lachozadigital
      @lachozadigital  5 місяців тому +1

      @@luisinigo5572 Sí, depende de varios factores. Hay webs que tienen CAPTCHAs (sistema anti bot) que bloquean todo el tipo de scraping y hay que ir a por técnicas más avanzadas que requieren de conocimientos de programación.

  • @Meveller
    @Meveller 3 місяці тому +1

    Brutal

  • @franaryuna9110
    @franaryuna9110 5 місяців тому +1

    buenisimo

  • @alejandrolopez7886
    @alejandrolopez7886 7 місяців тому +1

    Me encanta tu canal.. me encantaría un vídeo sobre cámaras. Tengo Home Assistant pero lo tengo todo gestionado desde HomeKit porque no puedo sacar de ahí mis 3 cámaras. Las Aqara G2H Pro que van genial pero son son compatibles con Home Assistant. Sería genial un vídeo recomendando una cámara que funcione bien y se vea FLUIDA. Las que he visto la imagen va a golpes. 😱

    • @lachozadigital
      @lachozadigital  7 місяців тому

      En general, cualquier cámara con soporte ONVIF debería funcionar correctamente.
      Y como habrás visto, no soy muy de hacer reviews ni nada, aún así, añado a la lista un vídeo sobre cámaras «a mi estilo».

  • @carlosgallego1076
    @carlosgallego1076 7 місяців тому +2

    Buenísimo. Enhorabuena por el video

  • @franciscojgarciagamez4506
    @franciscojgarciagamez4506 7 місяців тому +1

    Genial gracias, buenísimo.

  • @AntonioValeromarin
    @AntonioValeromarin 7 місяців тому +1

    Brutal, que bueno. Habia oido esa integracion pero no le presté atención.
    Habrá que sacarle partido.

  • @proyectosmicropic
    @proyectosmicropic 7 місяців тому

    ¡Qué chuladaaaa!, es superútil. Muchas gracias

  • @paulino71
    @paulino71 7 місяців тому +1

    Miguel, el video genial, muchas gracias, un saludo 👏👏👍👍

  • @salvadorbp8517
    @salvadorbp8517 7 місяців тому +1

    Me lo apunto. Muy interesante

  • @Ad0lf030
    @Ad0lf030 7 місяців тому +1

    Que bueno!!! 👏👏👏

  • @JoseAGracia
    @JoseAGracia 7 місяців тому +1

    Muy bien vídeo. Gracias otra vez. Las opciones que dejas abiertas para rastrear webs con precios son muy interesantes.

    • @lachozadigital
      @lachozadigital  7 місяців тому

      El scraping da muchísimo juego la verdad. Si bien un componente específico siempre va ir mejor, para algún apaño rápido puede ser más que interesante.

  • @Kukufato
    @Kukufato 7 місяців тому +1

    Brutal!!😳 y además perfectamente explicado. Muchas gracias

    • @lachozadigital
      @lachozadigital  7 місяців тому +2

      Me alegro que quede claro y que sea útil.

  • @janvan5872
    @janvan5872 7 місяців тому +1

    Muy interesante, útil y práctico. Muchas gracias 🙂

    • @lachozadigital
      @lachozadigital  7 місяців тому +1

      Un placer. Si se te ocurre alguna idea interesante con el scraping no dudes en compartirla

  • @sebastianpannocchia177
    @sebastianpannocchia177 7 місяців тому

    Amigo, la verdad que tu contenido es de lo mas interesante, y tu forma de explicar es súper correcta!! Sigue así! Saludos!!!

    • @lachozadigital
      @lachozadigital  7 місяців тому

      Me alegro. Aunque en este vídeo mi pronunciación, ya de por sí «mú andaluza», con la nariz taponada no tenía claro si se me entendía bien o no.

  • @Eslovy
    @Eslovy 7 місяців тому +2

    Eres la repanocha!

  • @jalejandro0211
    @jalejandro0211 7 місяців тому +1

    Excelenteee mil gracias antes daba muchas vueltas para hacer lo mismo!!!!😂
    Una pregunta. Cómo podríamos notificar solo el precio del aceite si bajo (no si subió) 😊

    • @lachozadigital
      @lachozadigital  7 місяців тому +2

      Si quieres recibir notificaciones solo cuando baje, simplemente borra la automatización... No te engañes, no va a bajar...
      Bromas (dolorosas) a parte, en el trigger puedes poner como condición cuando el valor sea menor que el que te interese. Si quieres que «cuando baje, sea cual sea el anterior, pero que ahora sea menor», te encontrarás con el problema que si ahora sube 20c y al rato baja 10, te avisará (aunque sigue 10c más caro).
      Si aún así te interesa, una forma de hacerlo es con una condición tipo plantilla: {{ trigger.to_state.state | float < trigger.from_state.state | float }}
      Le indicamos que el valor nuevo (to_state) tiene que ser menor que el valor viejo (from_state)

    • @jalejandro0211
      @jalejandro0211 7 місяців тому

      @@lachozadigitalperfecto voy a probar y te molesto si algo… la verdad quiero es hacer una notificación cuando el precio del dólar baje no cuando suba respecto a mi moneda. Pero con lo que me dices voy a revisar. Mil gracias. 🎉

  • @joaquinroyo
    @joaquinroyo 3 місяці тому +1

    Muy bueno el video. Muy útil. Gracias por todos los vídeos que haces. Tengo un problema con algún símbolo y me da error, podrías trascribir el comando , creo hice algo incorrecto.

    • @lachozadigital
      @lachozadigital  3 місяці тому

      ¿A que comando te refieres exactamente?

    • @joaquinroyo
      @joaquinroyo 3 місяці тому

      @@lachozadigital A el comando para eliminar los valores que no sean números o punto. {{ value....

    • @lachozadigital
      @lachozadigital  3 місяці тому

      ​@@joaquinroyo Si es para el calcular el precio, sería {{ value | replace(",", ".") | regex_replace("[^0-9.]", "") }}

    • @joaquinroyo
      @joaquinroyo 3 місяці тому

      @@lachozadigital Es para sacar un valor de una sonda de humedad, de un programador de riego y el valor sale en la página web, quiero hacer alguna automatizacion con esos valores

    • @lachozadigital
      @lachozadigital  3 місяці тому

      @@joaquinroyo Inicialmente si consigues capturar el valor, esa plantilla debería valerte también, ya dependerá de como esté formateados los datos.
      Recuerda que si la web requiere identificación de usuario y contraseña no servirá este sistema. Tendrías que mirar el vídeo de REST.

  • @miguelestevezb
    @miguelestevezb 7 місяців тому

    Miguel, mola tu estilo. Sabrías decirnos cada cuanto tiempo HA refresca la información?, no necesito saber cuando cambia (eso ya lo explicas muy bien) , solo cada cuanto tiempo la refresca. Gracias!!👍

    • @miguelestevezb
      @miguelestevezb 7 місяців тому

      Mejor todavía, podemos forzar que se actualice cada cierto tiempo?

    • @lachozadigital
      @lachozadigital  7 місяців тому +1

      Buenas tocayo. De forma automática se actualiza cada 10 minutos, pero puedes forzar su actualización usando el servicio homeassistant.update_entity

  • @MrFuRi4
    @MrFuRi4 7 місяців тому

    me parece brutal esta función, mira que llevo años con HA y desconocía de su existencia. Una pregunta, desde que se actualiza por ejemplo el precio del aceite hasta que se refresca en HA pasa mucho tiempo? tienes controlado lo que tarda? Enhorabuena por el video, muy bien explicado. saludosss

    • @lachozadigital
      @lachozadigital  7 місяців тому

      El componente se actualiza cada 10 minutos. Si se configura a mano desde el yaml se puede especificar el tiempo, supongo que añadirán en algún momento dicha opción también a la interfaz gráfica.

  • @LuisCarlosMalo
    @LuisCarlosMalo 7 місяців тому +1

    superinteresante!! gracias!!, que pena que no nos hayas mostrado como entrar a una web en la que debes logearte primero para ir al menú en cuestión. Se me ocurre webs que no ofrencen apis o integraciones como tal, pero que una vez logeado puedes ver datos.
    Otra opcion buena sería programar una automatización en HA, o NodeRed, para que vaya a una web, se logeé, vaya a un menú y haga clic en un botón. ¿eso es mucho pedir no?
    salu2

    • @lachozadigital
      @lachozadigital  7 місяців тому +1

      Bufs, eso no sería hacer un vídeo, sería un canal entero. Requiere conocimientos de programación y bastantes temas web (manejo de cookies, localización de campos, envío de formularios, codificación de datos....).
      Si sale algún componente para controlar un navegador y grabar acciones (tipo Selenium), podría hacerse, de lo contrario, es más sencillo hacer un componente por web.

    • @LuisCarlosMalo
      @LuisCarlosMalo 7 місяців тому

      Exacto algo tipo Selenium! @@lachozadigital

  • @jesfernandezm
    @jesfernandezm 6 місяців тому +1

    Muy interesante, aunque los ejemplos me funcionan, cuando intento cargar lo que me interesa no funciona. Seguiré probando.

    • @lachozadigital
      @lachozadigital  6 місяців тому

      Esto es un scrapping sencillo. Funciona en webs que no tengan sistemas «anti scrapping», como pueden ser captchas invisibles y demás.

  • @urriurriurrri
    @urriurriurrri 7 місяців тому +1

    Puede ser que en Amazon esto no funcione? En otras páginas sin problemas pero Amazon no me va

    • @lachozadigital
      @lachozadigital  7 місяців тому +1

      Pues hace un tiempo lo usé sin problemas, pero ahora que lo has mencionado he vuelto probar y parece que han metido un CAPTCHA cuando detecta que la petición es «rara».
      Cachis... Si encuentro un rato investigaré un poco como evitarlo, que Amazon es un caso muy interesante.

  • @enriquef.l8084
    @enriquef.l8084 6 місяців тому +1

    Hola, se podría hacer una consulta a web de esios para ver cuando el pvpc está por debajo de un precio kw/h y que nos avise. Si es asi podría ser un buen tema para un video.
    Gracias por tu canal.
    FELIZ AÑO

    • @lachozadigital
      @lachozadigital  6 місяців тому

      Como poder de puede, pero veo más sencillo usar la integración oficial con HA.
      Ajustes, Dispositivo y Servicios, añadir y buscas PVPC.
      Además en la actualización del próximo miércoles van a añadir un par de opciones extras.

    • @lachozadigital
      @lachozadigital  6 місяців тому

      En cuanto a hacer un vídeo sobre el tema, estoy esperando a que se aclare «bien bien» el tema del PVPC y la Indexada, porque a partir de mañana serán bastante diferentes.

  • @argentinomacrifuevidaltamb3772
    @argentinomacrifuevidaltamb3772 7 місяців тому +1

    Excelente video, muy útiles ejemplos. Gracias

  • @manmass
    @manmass Місяць тому

    Gracias por el vídeo. Genial!! cómo podría momonitorizar una web si lo que quiero ver es algo que aún está por publicar? en mi caso es ver la web de un ayuntamiento las nuevas convocatorias de empleo. No se qué selector poner. Muchas gracias de antemano. Muy buenos vídeos!!

    • @lachozadigital
      @lachozadigital  Місяць тому

      Detectar algo «que ahora no está» es complicado. Seguramente tendrán un listado con las convocatorias actuales, algo muy sencillo es obtener el título de la última convocatoria, y cuando cambie, que te envíe una notificación con el nombre de la nueva.

    • @manmass
      @manmass Місяць тому

      Gracias por la respuesta. Probare a ver cómo lo soluciono en cualquier caso muchas gracias.

  • @Bato2000
    @Bato2000 5 місяців тому

    Buenos dias, ¿sabes si se puede hacer lo mismo de la web de Recarga Pública Iberdrola? sale un mapa de los puntos de recarga y me gustaria hacer un sensor para saber si un punto de carga esta libre o ocupado. Ya que la propia aplicacion no lo permite
    Gracias

    • @lachozadigital
      @lachozadigital  5 місяців тому +1

      Buenas.
      Para ese tipo de web este método no funciona, habría que usar el sistema REST, para el cual Home Assistant también tiene un componente.
      Algo más complicado, pero también conseguimos mejores resultados. Lo apunto para un futuro vídeo de «Scraping 2» o algo así para mitad-finales de febrero.

    • @Bato2000
      @Bato2000 5 місяців тому

      @@lachozadigital te lo agradezco de verdad, el cargador siempre esta ocupado y no hay manera de pillarlo libre

  • @Bato2000
    @Bato2000 25 днів тому

    Buenos días. Estaba pensando que podía usar este sistema para monitorizar. Sin mi conexión. Se cae. Haciendo una conexión por ejemplo a la página de Google, pero no he visto como cambiar la fecuencia de actualizacion de el web scrapping

    • @lachozadigital
      @lachozadigital  25 днів тому +1

      Pensaba publicar el vídeo la semana que viene, pero venga, lo cambio por el de esta. Échale un ojo esta tarde ;)

    • @Bato2000
      @Bato2000 25 днів тому

      @@lachozadigital que coincidencia 😅

    • @lachozadigital
      @lachozadigital  25 днів тому +1

      Es que con las vacaciones, te vas de casa... Y te entra la paranoia...
      PD: Respondiendo a tu pregunta. El scan interval como tal no lo tienes disponible en la interfaz gráfica, pero como alternativa puedes crear una automatización que llame al servicio homeassistant.update_entity indicándole la entidad del scrape y así actualizar al ritmo que quieras.

  • @enriqueronda7239
    @enriqueronda7239 7 місяців тому

    Mi gozo en un pozo. Ayer lo probé y obtenía todos los datos sin problema. Hoy ya no, aparece como desconocido. ¿Depende de cómo esté construida la página el que accedas al dato o no?. Gracias

    • @lachozadigital
      @lachozadigital  7 місяців тому

      Algunas webs cambian su estructura y el selector deja de funcionar, por lo que tienes que actualizarlo.
      Otro tema puede ser que tenga algún captcha y tras varias peticiones te hayan «código manía»

  • @javierfernandez-ck1jw
    @javierfernandez-ck1jw 7 місяців тому

    Hola, he estado haciendo pruebas para comprobar la diferencia de precio en algunos hipermercados (en el aceite de oliva virgen extra lo de la diferencia es un sarcasmo, viva el oligopolio) y me pasa que no consigo sacar ningún precio de Mercadona. SI alguien lo ha conseguido le pido que indique cómo lo ha hecho. Gracias.

    • @lachozadigital
      @lachozadigital  7 місяців тому +1

      Mercadona usa un tipo de web llamado «one-page» dónde tu navegador va generando la web. Desgraciadamente ese sistema es bastante complejo de implementar con el componente Scrape, sería más bien con el componente REST, el cual es más complejo de utilizar pues debes tener conocimientos de APIs.

    • @javierfernandez-ck1jw
      @javierfernandez-ck1jw 7 місяців тому

      @@lachozadigital Me lo imaginaba, voy a ver si a través de Node Red lo consigo. Por probar que no quede. Muchas gracias.

    • @javierfernandez-ck1jw
      @javierfernandez-ck1jw 7 місяців тому

      Pues las pruebas no han tenido éxito, en Node Red saco los datos del precio de Día y Carrefour, como con Scrape, pero de Mercadona, na de na.

    • @lachozadigital
      @lachozadigital  7 місяців тому

      @@javierfernandez-ck1jw la única opción es «atacar» la API Rest, y seguramente tengas que hacer una petición inicial para enviar el código postal y recoger la cookie la cual tendrás que enviar las peticiones posteriores.
      No lo veo especialmente trivial.

    • @javierfernandez-ck1jw
      @javierfernandez-ck1jw 7 місяців тому

      @@lachozadigital Gracias de nuevo. No me veo especialmente capacitado ni con ganas para meterme en ese embrollo. Por cierto, aprovechando tu amabilidad y tus conocimientos, tengo un esp32 que le metí el firmware de wled y en un determinado momento dejó de funcionar, el caso es que quise volver a intalar el firmware y cuando le pulso el botón boot no hace absolutamente nada por lo que no puedo cargar nada. ¿Sabes si existe alguna posibilidad de solucionarlo o el esp32 va directamente a la papelera?