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 full-size slide

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

    View full-size slide

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

    View full-size slide

  4. Consumiendo una API

    View full-size slide

  5. Consumiendo una API

    View full-size slide

  6. Consumiendo una API

    View full-size slide

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

    View full-size 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 full-size slide

  9. Bienvenida al World Wild Web

    View full-size slide

  10. Bienvenida al World Wild Web

    View full-size slide

  11. Bienvenida al World Wild Web

    View full-size slide

  12. Bienvenida al World Wild Web

    View full-size slide

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

    View full-size 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 full-size 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 full-size 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 full-size 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 full-size 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 full-size slide

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

    View full-size slide

  20. scrapy --help

    View full-size slide

  21. scrapy startproject socrates

    View full-size slide

  22. scrapy genspider example example.org

    View full-size slide

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

    View full-size slide

  24. Item loaders (1/2)

    View full-size slide

  25. Item loaders (2/2)

    View full-size slide

  26. Petición simple (1/3)

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  29. Item pipelines

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  33. Tips - Chrome XPath Helper

    View full-size slide

  34. Tips - Focus en la API

    View full-size slide

  35. Tips - Evitar visual scraping

    View full-size slide

  36. Tips - Conocer soluciones existentes

    View full-size slide