3. ¿Que es Scrapy?
Scrapy es un framework para el rastreo de
sitios web y extracción de datos
estructurados que pueden ser utilizados
para una amplia gama de aplicaciones,
como ser data mining, procesamiento de
datos o archivo histórico de información.
4. Como nace
Aunque Scrapy fue diseñado originalmente
para captura de imágenes (más
precisamente, web scraping), también se
puede utilizar para extraer los datos
mediante APIs (como Amazon Associates
Web Services) o como un web crawler de
propósito general.
5. Por ejemplo: elige un sitio web
Queremos extraer alguna información de un sitio
web, pero el sitio web no proporciona ninguna API
o mecanismo para acceder a esa información
mediante un programa.
Con Scrapy podemos extraer esa información.
Digamos que queremos extraer la URL, nombre,
descripción de nuevas Oposiciones y Convocatorias
de Empleo Público.
6. Por ejemplo: elige un sitio web
Definir los datos que deseas scrapear
Escribir una araña para extraer los datos
Ejecutar la araña para extraer los datos
Revisar los datos scrapeados
Guardar la información y emplearla donde quieras
7. Características
Simple - diseñado con la simplicidad en mente
Productivo - sólo tiene que escribir las reglas para
extraer los datos de las páginas web y dejar que Scrapy
rastree el sitio web
Rápido y potente - scrapy se utiliza en producción para
scrapear más de 500 sitios completos de ventas a diario
y todo en un mismo servidor
Extensible - proporciona varios mecanismos para
conectar nuevas extensiones sin tener que alterar el
framework
8. Características
Portátil, open source, 100% Python
Muy completo - contiene extensiones para manejo
de cookies, HTTP compression, HTTP
authentication, HTTP cache, restricción de
profundidad, descarga de documentos, etc
Bien documentado y testeado
Cuenta con una comunidad amplia y apoyo
comercial
9. Primeros pasos
Definir entorno:
Se puede ejecutar en Linux, Windows, Mac y BSD
Requerimientos:
Python 2.6 or 2.7
OpenSSL
No usar python-scrapy package para Ubuntu
Para obtener más reciente
Git Repo
10. Conceptos básicos
Command line tool
Scrapy es controlado a traves de un conjunto de comandos y
sub-comandos
Ej generador de proyecto, generador de spiders, crawl, fetch,
check, etc
Items
El objetivo principal de scrapeado es extraer datos
estructurados procedentes de fuentes no estructuradas, por lo
general, las páginas web.
Scrapy proporciona la clase ítem para este propósito. Los ítems
son simples objetos contenedores utilizados para recoger estos
datos.
Spiders
Define como un sitio o un conjunto de sitios va a ser navegado y
scrapeado
11. Conceptos básicos
Selectors
XPathSelector
HtmlXPathSelector
XmlXPathSelector
Item Loaders
A pesar de que los ítems se pueden completar utilizando
su propio diccionario, los cargadores del ítems
proporcionan métodos mas complejos y convenientes
para rellenarlos.
Automatizan algunas tareas comunes como el análisis de
los datos extraídos antes de asignarlos.
12. Conceptos básicos
Item Pipeline
Una vez extraído un ítem, puede pasarse por un Pipeline para
aplicar varios procesos adicionales.
Ej: limpieza de datos HTML, validación de datos (comprobando
que los artículos contienen ciertos campos), comprobación de
duplicados, descarte, almacenamiento, etc
Feed exports
Formatos: JSON, JSON lines, CSV, XML
Storages: Local filesystem, FTP, S3, Standard output
Link Extractors
LinkExtractors son objetos cuyo único propósito es extraer los
enlaces de páginas web (objetos scrapy.http.Response), que
serán seguidos por el crawler.
13. Algunos conceptos avanzados
Usando Firefox para scraping (DOM, XPather, XPath
Checker, Tamper Data, Firecookie)
Usando Firebug para scraping (Xpath)
Ubuntu packages
Jobs: pausar y reanudar crawlers
Descarga de imágenes de ítems (pipeline)
14. Ejemplo caso de uso con Scrapy
Recolección de Oposiciones y Convocatorias de
Empleo Público (www.oposicionesaldia.com)
Recolección de Becas de Estudios
Recolección de Tesis, Documentos, Publicaciones y
Recursos Educativos
15. ScrapingHub
Scrapy Cloud es una plataforma para la
implementación, ejecución y seguimiento de las
arañas Scrapy y un visualizador de los datos
scrapeados
Permite controlar las arañas mediante tareas
programadas, revisar que procesos están corriendo
y obtener los datos scrapeados.
Los proyectos se pueden gestionan desde la API o a
través de su Panel Web.
16. AutoScraping
Autoscraping es una herramienta que le permite
scrapear sitios web sin necesidad de conocimientos
de programación.
Sólo debe elegir las páginas web para scrapear,
definir que campos queremos obtener (ej: nombre,
descripción, título) y el sistema hace el resto.
Está basado íntegramente en la web, por lo que
solo requiere un navegador moderno, sin necesidad
de descargar o instalar nada.
17. ProxyHub
ProxyHub proporciona un HTTP proxy, con un
conjunto de direcciones IP rotativas, diseñado
específicamente para scraping.
Con este servicio, los usuarios de Scrapy no deben
preocuparse mas sobre:
Demoras de descagas
Request concurrentes
User agents
Cookies o referrers para evitar ser baneados
18. Ejemplo caso de uso con AutoScraping
Captura de Daily Deals y ofertas de sitios webs de
e-commerce para Offertazo (www.offertazo.com)