Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Web scraping con Scrapy

alertot
December 13, 2017

Web scraping con Scrapy

Spanish talk about scraping with Scrapy given in local meetup in Santiago, Chile.

alertot

December 13, 2017
Tweet

More Decks by alertot

Other Decks in Technology

Transcript

  1. Web scraping con Scrapy
    Claudio Salazar

    View Slide

  2. Sobre mí
    ★ CEO @ alertot
    ★ Ingeniero de Software @ Scrapinghub (2012-2017)
    ★ Background en seguridad y desarrollo

    View Slide

  3. Lista de requerimientos
    1. Generar output fácil de manipular (JSON Lines)

    View Slide

  4. Consumiendo una API

    View Slide

  5. Consumiendo una API

    View Slide

  6. Consumiendo una API

    View Slide

  7. Lista de requerimientos
    1. Generar output fácil de manejar
    2. Posibilitar limpieza de datos

    View Slide

  8. Solución actual
    ● Suficiente para casos simples
    ● jq no parece la mejor opción para sanitizar datos
    ● Procesamiento a nivel de shell (awk,sed) podría quebrar el formato JSON
    ● Un lenguaje de programación daría mayor flexibilidad

    View Slide

  9. Bienvenida al World Wild Web

    View Slide

  10. Bienvenida al World Wild Web

    View Slide

  11. Bienvenida al World Wild Web

    View Slide

  12. Bienvenida al World Wild Web

    View Slide

  13. Lista de requerimientos
    1. Generar output fácil de manejar
    2. Posibilitar limpieza de datos
    3. Crear un proyecto mantenible

    View Slide

  14. Solución actual
    ● Combinación de extracción, sanitización y resultado
    ● No hay relación entre los datos y cómo procesarlos
    ● No es escalable
    ● Querer mejorar estas falencias nos haría reinventar la rueda

    View Slide

  15. Lista de requerimientos
    1. Generar output fácil de manejar
    2. Posibilitar limpieza de datos
    3. Crear un software mantenible
    4. Proveer facilidad para recorrer el sitio

    View Slide

  16. Solución actual
    ● Suficiente para sitios pequeños
    ● Falta de control sobre requests repetidas
    ● Falta de adaptación a condiciones de red

    View Slide

  17. Lista de requerimientos
    1. Generar output fácil de manejar
    2. Posibilitar limpieza de datos
    3. Crear un software mantenible
    4. Proveer facilidad para recorrer el sitio
    5. Proveer herramientas para acelerar el desarrollo

    View Slide

  18. Lista de requerimientos
    1. Generar output fácil de manejar
    2. Posibilitar limpieza de datos
    3. Crear un software mantenible
    4. Proveer facilidad para recorrer el sitio
    5. Proveer herramientas para acelerar el desarrollo
    6. Contar con documentación y comunidad de calidad

    View Slide

  19. View Slide

  20. Características
    ● Framework especializado en web scraping
    ● Funcionamiento asíncrono
    ● 25k estrellas en Github
    ● Fuerte comunidad y soporte

    View Slide

  21. View Slide

  22. scrapy --help

    View Slide

  23. scrapy startproject socrates

    View Slide

  24. scrapy genspider example example.org

    View Slide

  25. Tipos de spiders
    ● BaseSpider
    ● CrawlSpider
    ● XMLFeedSpider
    ● CSVFeedSpider
    ● SitemapSpider

    View Slide

  26. Items

    View Slide

  27. Item loaders (1/2)

    View Slide

  28. Item loaders (2/2)

    View Slide

  29. Petición simple (1/3)

    View Slide

  30. Paso de datos entre peticiones (2/3)

    View Slide

  31. Petición usando formulario (3/3)

    View Slide

  32. View Slide

  33. Item pipelines

    View Slide

  34. Exportando items
    ● JSON
    ● JSON lines
    ● CSV
    ● XML

    View Slide

  35. Almacenando items
    ● Sistema de archivos
    ● FTP
    ● S3
    ● Stdout

    View Slide

  36. Debugging
    ● Comando `parse`
    ● Scrapy shell
    ● Open in browser
    ● Telnet

    View Slide

  37. Tips - Chrome XPath Helper

    View Slide

  38. Tips - Focus en la API

    View Slide

  39. Tips - Evitar visual scraping

    View Slide

  40. Tips - Conocer soluciones existentes

    View Slide

  41. Q&A
    Gracias!
    [email protected]

    View Slide