Descargar una página web en formato .html usando la programación

Iniciado por AdriánT95, 3 Julio 2018, 10:20 AM

0 Miembros y 1 Visitante están viendo este tema.

AdriánT95

Hola a tod@s!

Necesito hacer web scraping a varias páginas web, pero debido a las limitaciones que tengo, me gustaría saber si hay algún modo descargar páginas web en formato .html usando algún lenguaje de programación (para que sea automático y no descargar cada una usando el Chrome).

Con limitaciones me refiero a que, no me deja hacer Web Scraping de un campo de texto debido a que la página tiene un tiempo de espera de unos 6 segundos aproximadamente, entonces, no me deja acceder a dicho valor con Web Scraping ya que lo estoy tratando de recuperar al instante y aún no existe (la página está prácticamente vacía cuando está cargando - lo único que aparece es un mensaje diciendo que está buscando las mejores ofertas y así durante unos 6 segundos hasta que aparece lo que yo quiero recuperar en PHP). Entonces, había pensado que la mejor solución sería descargando las páginas en formato .html y así podría acceder a dicho valor, lo único que, si lo hago así, también me podría encontrar con el mismo problema ya que si el valor que yo quiero recuperar, tarda unos 6 segundos en existir, necesitaría que primero cargue la página internamente durante unos segundos y después ya descargar el .html

La verdad es que estoy algo perdido y no sé cuál sería la mejor forma de poder hacer eso. Mi objetivo es muy simple: Poder recuperar precios de varias páginas web sobre hoteles para hacer un comparador de precios (lo haría con cualquier lenguaje de programación web, ya sea PHP/javascript/HTML), pero me encuentro con esos problemas que aún no sé cómo solventarlos  :-\

¿Alguien me podría echar una mano?

Gracias de antemano!

engel lex

lo primero es aprender a programar web para que entiendas como funciona php y las paginas web, sin eso el scrapper será un inferno...

un ejemplo por lo que veo que no tienes dicho conocimiento es que no tienes que esperar valores ni nada, en tal caso buscas el ajax que obtiene ese valor y sacas directamente la información que te eimporta sin necesidad del resto de la pagina
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

AdriánT95

Pues sí, la verdad es que es la primera vez que hago Web Scraping, por lo que vi un tutorial en Youtube y para hacerlo utilizo el "simple_html_dom" para PHP, aunque ya había hecho cosas con PHP anteriormente.

Sobre lo que dices del Ajax, no es otro lenguaje? Que debería hacer con eso? Hay algún manual/tutorial para aprender a utilizarlo para poder hacer Web Scraping?

engel lex

ajax no es un lenguaje es como se llama la tecnica de carga asincrona con js a algún servidor

sin tener conocimiento solido de web, es esencial para hacer scrapping, ya que tendrás que entender que hizo el autor de la web

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

AdriánT95

Pff, pues me temo que esto va a ser muy muy complicado de lograrlo ya que tengo hacer Web Scraping a muchas páginas web, no sólo a una. Si fuera sólo una, me atrevería a intentarlo pero cómo dijiste, será un infierno si son muchas.

Entonces, no creo que Web Scraping sea muy viable para lo que yo quiero hacer, ¿se te ocurre algún otro modo? Es que, podría copiar los precios manualmente de cada hotel al código PHP y haría operaciones con ellos si hiciera falta, pero... ¿Y si cambian? Obviamente no estaría cada vez comprobando si han cambiado o no, si almenos hubiera alguna forma de que me avisara cada vez que cambien en su página web, ya me bastaría.

A parte, ahora que lo pienso: Web Scraping tiene un problema y es que si cambia la estructura de una web, entonces el código que yo escribí para hacer Web Scraping a dicha web no funcionaría y tendría que rescribirlo.

La verdad es que ya intenté buscar alguna API sobre los hoteles en España, sería lo más óptimo para lo que yo quiero hacer, pero no encontré ninguno por la red  :-\

Eleкtro

#5
Cita de: AdriánT95 en  3 Julio 2018, 12:56 PM
Pues sí, la verdad es que es la primera vez que hago Web Scraping, por lo que vi un tutorial en Youtube y para hacerlo utilizo el "simple_html_dom" para PHP, aunque ya había hecho cosas con PHP anteriormente.

Cita de: AdriánT95 en  4 Julio 2018, 09:55 AMPff, pues me temo que esto va a ser muy muy complicado de lograrlo ya que tengo hacer Web Scraping a muchas páginas web, no sólo a una. Si fuera sólo una, me atrevería a intentarlo pero cómo dijiste, será un infierno si son muchas.

Es por eso que existen librerías de terceros que te hacen todo el trabajo sucio para personas con escasos conocimientos en "X" materias, pero claro, depende del lenguaje que estés utilizando, en la plataforma .NET Framework por ejemplo una librería que te ayudaría mucho sería aBot (además es open-source), entre varias otras. Aparte de eso también existe software para el webscrapping, como por ejemplo WebHarvy por nombrar alguno...

Obviamente tener conocimientos te facilitaría mucho el data parsing o análisis de datos de la web que sea, pero tampoco es un motivo para pensar "no puedo hacerlo sin conocimientos", ya que si no sabes hacerlo mediante un lenguaje de programación, como alternativa siempre puedes recurrir a software de web-scrapping (como el ya mencionado WebHarvy) con documentación y tutoriales y etc...

Cita de: AdriánT95 en  4 Julio 2018, 09:55 AM
Web Scraping tiene un problema y es que si cambia la estructura de una web, entonces el código que yo escribí para hacer Web Scraping a dicha web no funcionaría y tendría que rescribirlo.

Bueno, todo el resto del mundo tiene que lidiar con ese problema: manutención de código, es algo que debes asumir, pero la estructura de una página web no tiene por que cambiar muchas veces a corto plazo, quizás durante un año entero no haya cambios, y de haberlos tampoco debes asumir que los cambios realizados en el diseño de la página o en lo que sea vayan a afectar al análisis de los datos que quieras obtener, a veces no ocurre esa "tragedia". Por si te sirve de ánimos, yo llevo manteniendo varios web-crawlers durante años y las veces que he tenido que adaptar/actualizar los algoritmos por culpa de cambios críticos en la estructura de sus webs se cuentan con los dedos de una mano...

Cita de: AdriánT95 en  4 Julio 2018, 09:55 AM
La verdad es que ya intenté buscar alguna API sobre los hoteles en España, sería lo más óptimo para lo que yo quiero hacer, pero no encontré ninguno por la red  :-\

En los primeros resultados de Google se lista un artículo con 110 APIs...


Viendolo solo un poco y por encima, algunas APIs son para servicios de hoteles muy específicos, pero alguna habrá que te deba servir, todo es ponerse a leer las descripciones de cada API una por una a ver para que sirve, supongo que alguna servirá para realizar consultas de precios de hoteles dentro de una base de datos que contenga hoteles de España, claro que dudo mucho que un servicio así vaya a ser gratuito...

Saludos








AdriánT95

CitarEs por eso que existen librerías de terceros que te hacen todo el trabajo sucio para personas con escasos conocimientos en "X" materias, pero claro, depende del lenguaje que estés utilizando, en la plataforma .NET Framework por ejemplo una librería que te ayudaría mucho sería aBot (además es open-source), entre varias otras. Aparte de eso también existe software para el webscrapping, como por ejemplo WebHarvy por nombrar alguno...

Bueno, en principio el lenguaje que me interesa es PHP/javascript ya que tengo que hacer una aplicación web... Entonces no sé si me serviría la librería aBot. Pero el "simple_html_dom" es una librería para PHP? Sobre el software de WebScrapping, ya lo probé, pero me interesa que sea automático ya que esa aplicación que quiero hacer, se la tiene que quedar una empresa y obviamente no les voy a pedir que abran cada vez el programa para que se actualizen los precios, es por eso que prefiero hacerlo con programación, para que salgan los precios actualizados cada vez que se abra mi aplicación.

CitarObviamente tener conocimientos te facilitaría mucho el data parsing o análisis de datos de la web que sea, pero tampoco es un motivo para pensar "no puedo hacerlo sin conocimientos", ya que si no sabes hacerlo mediante un lenguaje de programación, como alternativa siempre puedes recurrir a software de web-scrapping (como el ya mencionado WebHarvy) con documentación y tutoriales y etc...
Eso es lo que me interesa, pero mi pregunta es: ¿Cómo puedo adquirir esos conocimientos? ¿Hay algún manual o algo en internet para poder aprenderlo? No me importa si está en inglés ya que tengo un nivel de inglés lo suficientemente alto, así que si sabes de alguna página o recurso para poder aprenderlo y me lo pudieras pasar, te lo agradecería! Cómo dije anteriormente, tengo conceptos de PHP, sólo que ahora necesito aprender a hacer Web Scraping.

CitarEn los primeros resultados de Google se lista un artículo con 110 APIs...

https://www.programmableweb.com/category/hotels/api

Viendolo solo un poco y por encima, algunas APIs son para servicios de hoteles muy específicos, pero alguna habrá que te deba servir, todo es ponerse a leer las descripciones de cada API una por una a ver para que sirve, supongo que alguna servirá para realizar consultas de precios de hoteles dentro de una base de datos que contenga hoteles de España, claro que dudo mucho que un servicio así vaya a ser gratuito...
Gracias!  :) eso no lo encontré, es que creo que lo intenté buscar en español... Bueno, veré si salen los hoteles que me interesan en esas API's, aunque si hay que pagar, casi que prefiero hacer Web Scraping.

Saludos