Proyecto: web scrapper.

stuckED

Hola a todos:
Estoy terminando el ciclo de DAW y llevo estudiando la idea de hacer como proyecto un web scrapper. Llevo un par de meses investigando la idea y, aunque me parece que puede tener alguna complejidad el resultado final, el concepto en sí me parece sencillo. Donde quería llegar es: ¿algún usuario del foro ha trabajado o trabaja con spider bots o hace web scrapping? Si es así: ¿cuál es la tecnología que utilizáis? He pensado en desarrollar el scrapeador con javaScript, y los datos en jSon ¿soy un ignorante? Me he leído el libro del pato, ¿ya puedo postear?

Gracias y besos.

HeXaN

Python + Beautiful Soup y lo haces en una tarde. Literalmente.

9 2 respuestas
B

+1 a la recomendación de Python y Beautiful Soup, échale un ojo a Scrapy también

1
Nucklear

El unico problema de BeautifulSoup es si intentas parsear algo como react que para eso tendras que usar algo como PhantomJS o similares.

1 respuesta
mecmec

Para tests e2e utilizo selenium + protractor en JS. Para el tema esperas en webs angular es muy interesante.

Lutx1

En primero aprenderias java, Jsoup es tu amigo.

HeXaN

#4 Simplemente cargas un navegador headless y puedes seguir usando el mismo combo.

1 respuesta
Nucklear

#7 Si, pero quiero decir que necesitará hacer eso, o tirar de alguna librería que lo haga. Es una pregunta muy comun en gente que empieza a escribir scrappers.

Fyn4r

Scrapy pls

eondev

Yo he hecho el proyecto de eso, lo que es el scrapping es una tontería, usando Python es: Requests + Beatifulsoup.
Ahora bien, si queres algo así guay, que se pueda tragar diferentes tipos de webs sin codigo ahí espachurrado, tratar los datos que sacas y saber como guardarla y tal te puede quedar algo chulo. Osea, scrapear por scrapear no tiene mucho sentido, la chicha la tienes luego.

Si las wecs q cargan de forma dinamica y es todo JS suerte con el sida y la memoria que te tragará el chrome headless xDD (me suena que habia un headless hecho en Qt, no sé cuánto chupará)

1 respuesta
bLaKnI

Pero, ¿para que hacer una araña?

1 respuesta
HeXaN

#11 ¿Y por qué no?

stuckED

Hostias, gracias a todos.
La verdad que la solución que me da #2 me mola, porque no he encontrado ninguna librería de JS para trabajar el scrapping (no porque no exista, sino porque lo ignoro, vaya.). La idea de python, como digo, me mola mucho. Pero SE SUPONE que tenemos que utilizar tecnologías que hayamos visto en clase para el proyecto. Los que hayan hecho el FP sabrán de qué hablo.

#10 Claro, la idea es guardar todos esos datos en una base de datos propia, y crear una web (me imagino que tiraré de Bootstrap porque es lo que más hemos trabajado y te quita muchos dolores de cabeza con el layout) desde la que tú puedas buscar y se te muestren esos datos. El araña lo quiero para que me haga las búsquedas cada X y tener esa base de datos actualizada.

Los profesores no saben mucho de qué les hablo y como sé que aquí en MV hay auténticos mastodontes de la programación pues recurro a esto. ¿Me estoy haciendo la picha un lío o tiene sentido lo que quiero hacer?

Gracias una vez más a todos.

2 respuestas
eondev

#13 No sí, lo que quieres hacer está bien xD. En nodejs hay mil librerias también y me suena que bs4 está tb en js y sino hay un equivalente seguro.

Hacer un proyecto así está guay porque tocas todo, mi tutor me dijo que le molaba justo por eso.

HeXaN

#13 ¿Qué lenguajes tienes "permitidos"?

1 respuesta
stuckED

#15 Pues JS y PHP, básicamente. Podría informarme si puedo usar python para hacer el scrapper y luego meter el js en la parte front de la web. Que puede ser otra opción.

3 respuestas
Ronso

No creo que te pongan pega por usar otro lenguaje. El problema de los profesores es que no tienen ni puta idea y como te salgas del lenguaje que usan se pierden. Yo en DAW le presente un proyecto de reservas de habitaciones de hoteles con Wordpress (plantilla descargada) lo que tardé en instalar la plantilla y modificar 4 cosas en php/html. Como no tenían ni idea ni preguntaron, un 7 y pa casa.

Traber

#16 En ese caso, ¿por qué no haces un scrapper que no solo coja una web, sino que también coja todos sus recursos? Estaría curioso algo que fuese capaz de identificar, dentro del HTML, su CSS y su JS, los recursos asociados, como fuentes, imágenes, y fuese capaz de hacer una copia 1:1 de una web. Y hecho en PHP (servicio web) ya sería la hostia.

Entre otras cosas, no solo sería útil como scrapper, sino incluso con fines forenses tendría un nicho curioso, el hacer una copia 1:1 de una web, con sus recursos JS, para analizar JS inyectado, o bien para tener una copia en un momento del tiempo determinado de una web completa, con una visualización que se mantenga dado que no dependes del CSS/JS que tenga en línea en ese momento esa web (almacenas un enlace), sino que tú tienes una copia con toda la web, completa (almacenas los archivos).

MisKo

#16 No la he probado aun, pero tengo desde hace un tiempo esta librería guardada en favs: https://github.com/chrome-php/headless-chromium-php

Y dependiendo de lo que quieras sacar ( Y si no necesitas cargar el JS de la página ), con PHP puedes usar file_get_contents o curl para traer el código fuente de la misma.

Para que te hagas a la idea, hace unos años hice un scrapper para un cliente de la playstore de android que sacaba, para cada aplicación/juego, y a base de expresiones regulares, la siguiente información:

  • URL
  • Nombre e Imagen
  • Opiniones y valoración
  • Versión y Descargas
  • Datos del desarrollador ( como la web, email, etc.. )
  • Links de aplicaciones similares ( para agregar a la base de datos y repetir el proceso )

Todo dependerá de lo que necesites sacar de las webs que analices y la tecnología con la que las hayan hecho.

sh31k

#16 Si es para un proyecto de final de ciclo y solo te dejan usar PHP mirate simpleHTMLDom
http://simplehtmldom.sourceforge.net
, es super simple de implementar y si manejas el dom parseas bastante fácil.

Si lo que quieres es aprender y hacer algo sólido: #2

11 días después
C

Yo hice uno con https://github.com/GoogleChrome/puppeteer, muy sencillo de usar.

16 días después
Saphyel

Todas las recomendaciones que veo por aqui (de PHP) parecen del 2010 por lo menos.

Si quieres usar un scrapper en PHP uno de los mejores sin duda es: http://docs.guzzlephp.org/en/stable/ (goutte tambien)
Y la alternativa es https://github.com/kriswallsmith/Buzz/blob/master/doc/index.md

1 respuesta
MisKo

#22 Pues la verdad que el proyecto del que hablo si tiene unos añitos y no he vuelto a necesitar nada del estilo xD

Podrías mencionar las mejoras q tiene cada librería respecto a curl por ejemplo, si no, pues ya las buscaré yo, pero por darle algo más de info al thread xD

1 respuesta
Saphyel

#23 no me acuerdo de todas...

Realmente si lo que quieres hacer es scripting para ver 4 productos o páginas puedes tirar de curl (o lo que quieras) porque todas esas librerías son una abstracción para que sea más fácil de mantener el código en proyectos grandes.

Se de uno que lleva siglos manteniendo varias webs en PHP que hace scrapping de otros productos para comprar cual es el más barato y le pregunte hace poco (2 meses?) y me recomendo esos 2

1 mes después
B

Curl te irá bien pero como se aumente la complejidad del scrapping por ejemplo con cookies de autentificación o haya JS en la web remota vas a tener unos quebraderos de cabeza impresionantes, experiencia propia. Para cosas básicas bien.

Yo he usado Selenium y te lo recomendaría si optas por otra cosa.

1 respuesta
E

#25 Selenium es más lento para algunas cosas pero está claro que te quita muchíiiisimos problemas en montones de webs que tienen montadas las cosas de forma poco ortodoxa así que concuerdo. Selenium headless es lo mejor y tampoco es muy complejo de utilizar.

1 respuesta
B

#26 Sí, es verdad lo que dices. Sacrificas algo de rendimiento pero es mucho más llevadero... en su momento yo lo usé con la clase PhantomJS, no sé si sigue en uso, con la cual no necesitaba interfaz gráfica y mostraba los resultados por consola (headless, como tú dices)

1 respuesta
eondev

#27 de todos los motores headless que hay, hice pruebas y el que menos consume el chrome headless.

1 respuesta
B

#28 me lo apunto

Usuarios habituales