web scraping - archivo montera34 · 2018-02-07 · lenguaje de programación hecho para favorecer...
TRANSCRIPT
![Page 1: WEB SCRAPING - Archivo montera34 · 2018-02-07 · Lenguaje de programación hecho para favorecer el código legible. Soporta orientación a objetos, programación imperativa y programación](https://reader036.vdocument.in/reader036/viewer/2022070714/5ed638ff0c1f140c715b467e/html5/thumbnails/1.jpg)
WEB SCRAPINGCómo extraer datos estructurados de una web
Hirikilabs, Tabakalera, Donostia 2018
wiki.montera34.com
![Page 2: WEB SCRAPING - Archivo montera34 · 2018-02-07 · Lenguaje de programación hecho para favorecer el código legible. Soporta orientación a objetos, programación imperativa y programación](https://reader036.vdocument.in/reader036/viewer/2022070714/5ed638ff0c1f140c715b467e/html5/thumbnails/2.jpg)
¿SCRAPING?Técnica consistente en extraer datos de una web de forma automatizada.
Un scraper entra en una web, selecciona unos datos concretos, y los copia en otro sitio.
A menudo se nombra también como crawler, araña, o bot.
Google, Facebook, Twitter y otros muchos utilizan estas técnicas.
![Page 3: WEB SCRAPING - Archivo montera34 · 2018-02-07 · Lenguaje de programación hecho para favorecer el código legible. Soporta orientación a objetos, programación imperativa y programación](https://reader036.vdocument.in/reader036/viewer/2022070714/5ed638ff0c1f140c715b467e/html5/thumbnails/3.jpg)
CÓMO FUNCIONA INTERNET
(Un resumen)
![Page 4: WEB SCRAPING - Archivo montera34 · 2018-02-07 · Lenguaje de programación hecho para favorecer el código legible. Soporta orientación a objetos, programación imperativa y programación](https://reader036.vdocument.in/reader036/viewer/2022070714/5ed638ff0c1f140c715b467e/html5/thumbnails/4.jpg)
INTERNET BÁSICO
1. Se realiza una petición de información desde un dispositivo (cliente)
2. La web (server) interpreta la petición y manda una respuesta
3. El dispositivo interpreta la respuesta y “pinta” la página web
![Page 5: WEB SCRAPING - Archivo montera34 · 2018-02-07 · Lenguaje de programación hecho para favorecer el código legible. Soporta orientación a objetos, programación imperativa y programación](https://reader036.vdocument.in/reader036/viewer/2022070714/5ed638ff0c1f140c715b467e/html5/thumbnails/5.jpg)
PETICIÓN HTML
![Page 6: WEB SCRAPING - Archivo montera34 · 2018-02-07 · Lenguaje de programación hecho para favorecer el código legible. Soporta orientación a objetos, programación imperativa y programación](https://reader036.vdocument.in/reader036/viewer/2022070714/5ed638ff0c1f140c715b467e/html5/thumbnails/6.jpg)
RESPUESTA HTML
![Page 7: WEB SCRAPING - Archivo montera34 · 2018-02-07 · Lenguaje de programación hecho para favorecer el código legible. Soporta orientación a objetos, programación imperativa y programación](https://reader036.vdocument.in/reader036/viewer/2022070714/5ed638ff0c1f140c715b467e/html5/thumbnails/7.jpg)
HTML
![Page 8: WEB SCRAPING - Archivo montera34 · 2018-02-07 · Lenguaje de programación hecho para favorecer el código legible. Soporta orientación a objetos, programación imperativa y programación](https://reader036.vdocument.in/reader036/viewer/2022070714/5ed638ff0c1f140c715b467e/html5/thumbnails/8.jpg)
JSON
![Page 9: WEB SCRAPING - Archivo montera34 · 2018-02-07 · Lenguaje de programación hecho para favorecer el código legible. Soporta orientación a objetos, programación imperativa y programación](https://reader036.vdocument.in/reader036/viewer/2022070714/5ed638ff0c1f140c715b467e/html5/thumbnails/9.jpg)
SCRAPING CON PYTHON
![Page 10: WEB SCRAPING - Archivo montera34 · 2018-02-07 · Lenguaje de programación hecho para favorecer el código legible. Soporta orientación a objetos, programación imperativa y programación](https://reader036.vdocument.in/reader036/viewer/2022070714/5ed638ff0c1f140c715b467e/html5/thumbnails/10.jpg)
¿PYTHON?Lenguaje de programación hecho para favorecer el código legible.
Soporta orientación a objetos, programación imperativa y programación funcional.
Es un lenguaje multiplataforma, interpretado, y software libre.
Muy usado en Data Science y Ciberseguridad.
![Page 11: WEB SCRAPING - Archivo montera34 · 2018-02-07 · Lenguaje de programación hecho para favorecer el código legible. Soporta orientación a objetos, programación imperativa y programación](https://reader036.vdocument.in/reader036/viewer/2022070714/5ed638ff0c1f140c715b467e/html5/thumbnails/11.jpg)
¿PYTHON?
![Page 12: WEB SCRAPING - Archivo montera34 · 2018-02-07 · Lenguaje de programación hecho para favorecer el código legible. Soporta orientación a objetos, programación imperativa y programación](https://reader036.vdocument.in/reader036/viewer/2022070714/5ed638ff0c1f140c715b467e/html5/thumbnails/12.jpg)
MÓDULOS DE PYTHON(PARA SCRAPING)
Urllib: Hace peticiones HTTP
BeautifulSoup: Interpretar respuestas HTTP
Json: Interpreta documentos (y respuestas) JSON
Selenium: Controlar un navegador web
Scrapy: Framework preparado para scrapers
![Page 13: WEB SCRAPING - Archivo montera34 · 2018-02-07 · Lenguaje de programación hecho para favorecer el código legible. Soporta orientación a objetos, programación imperativa y programación](https://reader036.vdocument.in/reader036/viewer/2022070714/5ed638ff0c1f140c715b467e/html5/thumbnails/13.jpg)
OTRAS HERRAMIENTAS(PARA SCRAPING)
POSTMAN: Hace peticiones HTTP y muestra su respuesta.
PhantomJS: Framework JavaScript para scraping.
![Page 14: WEB SCRAPING - Archivo montera34 · 2018-02-07 · Lenguaje de programación hecho para favorecer el código legible. Soporta orientación a objetos, programación imperativa y programación](https://reader036.vdocument.in/reader036/viewer/2022070714/5ed638ff0c1f140c715b467e/html5/thumbnails/14.jpg)
CÓMO HACER SCRAPING
![Page 15: WEB SCRAPING - Archivo montera34 · 2018-02-07 · Lenguaje de programación hecho para favorecer el código legible. Soporta orientación a objetos, programación imperativa y programación](https://reader036.vdocument.in/reader036/viewer/2022070714/5ed638ff0c1f140c715b467e/html5/thumbnails/15.jpg)
1. ANÁLISIS1. ¿Dónde y cómo se encuentra la información que
queremos obtener?
2. ¿Qué estructura de URLs utiliza?
3. ¿Emplea algún captcha o método similar?
4. ¿Tiene alguna API?
5. ¿Utiliza algún tipo de indexación?
![Page 16: WEB SCRAPING - Archivo montera34 · 2018-02-07 · Lenguaje de programación hecho para favorecer el código legible. Soporta orientación a objetos, programación imperativa y programación](https://reader036.vdocument.in/reader036/viewer/2022070714/5ed638ff0c1f140c715b467e/html5/thumbnails/16.jpg)
2. DIVIDE & CONQUER1. Un scraper para cada velocidad
2. Guardar URLs de los índices
3. No llegar nunca al límite de la query
4. Preparar el código para interrupciones
![Page 17: WEB SCRAPING - Archivo montera34 · 2018-02-07 · Lenguaje de programación hecho para favorecer el código legible. Soporta orientación a objetos, programación imperativa y programación](https://reader036.vdocument.in/reader036/viewer/2022070714/5ed638ff0c1f140c715b467e/html5/thumbnails/17.jpg)
3. HIDE & SEEK1. Scrapear sin prisa pero sin pausa
2. Atacar desde IPs dinámicas
3. Cambiar aleatoriamente de headers
4. Utilizar proxies
5. Aleatorizar tiempos
6. Cambiar patrones de navegación