Descripción de las técnicas empleadas por Aragón Open Data para captar la información que se está generando en diferentes redes sociales. La información es almacenada y procesada dentro del proyecto Aragón Open Social Data y ofrecida como servicio para su uso por terceros.
EduFlex, una educación accesible para quienes no entienden en clases
Obtención de datos de redes sociales
1. Obtención de datos de
redes sociales
Gonzalo Ruiz – gruiz@kampal.com
10 de marzo de 2016
2. Índice
• Introducción
• Técnicas y herramientas de extracción
de datos
• Ruido, técnicas de filtrado de datos
• Qué hemos hecho en Aragón Open
Social Data
• Qué ofrecemos al público
• Detección de tendencias
10 de marzo de 2016 2
3. Introducción
• Internet -> gran base de datos
• Desestructurada -> Redes sociales,
foros, medios de prensa, blogs, etc.
• Propuesta DGA
– Descargar todo lo relacionado con Aragón
– Ponerlo a disposición
• Ciudadanos
• Empresas
• Desarrolladores
10 de marzo de 2016 3
4. Para qué
• Marketing
• Prensa
• Ocio y turismo
• Imagen de marca
• Toma de decisiones estratégicas
• Tendencias
• Estudios de movilidad
• …
10 de marzo de 2016 4
7. El problema
• Lenguaje HTML (HyperText Markup
Language - lenguaje de marcas de
hipertexto)
• No hay un estándar de cómo estructurar
la información -> heterogeneidad
• Complicaciones -> AJAX, JavaScript
10 de marzo de 2016 7
8. Protocolo HTTP
• Sistema de cliente-servidor
• Petición y respuesta
• GET y POST
10 de marzo de 2016 8
10. Otros elementos
• Cabeceras -> datos de las peticiones y
respuestas
• Autenticación (sesión)
• Códigos de respuesta
– 1XX: informativas
– 2XX: correctas
– 3XX: redirecciones
– 4XX: errores de cliente
– 5XX: errores de servidor
10 de marzo de 2016 10
12. Ejemplo de diálogo
10 de marzo de 2016 12
• http://www.mitienda.com/index.html
Petición
Respuesta
13. Índice
• Introducción
• Técnicas y herramientas de
extracción de datos
• Ruido, técnicas de filtrado de datos
• Qué hemos hecho en Aragon Open
Social Data
• Qué ofrecemos al público
• Detección de tendencias
10 de marzo de 2016 13
14. Técnicas y herramientas de
extracción de datos
• Descargar toda la información –> BD
– Herramientas que las propias páginas web
proveen
• APIs (Application Programming Interface)
• Volcados en ficheros en diferentes formatos
(CSV, XLS, JSON, XML…)
– Si no queda más remedio -> scraping
• Tratar de extraer la información del HTML
10 de marzo de 2016 14
15. Opción 1 - API
• Interfaz de programación de
aplicaciones
• Lenguaje intermedio -> mecanismo de
pregunta y respuesta
• La información está estructurada ->
JSON, XML…
10 de marzo de 2016 15
18. API
• Ejemplos
– Twitter
– Facebook
– Youtube
– Instagram
– …
• Problemas
– Límites técnicos
– Límites legales
– Oscurantismo (empresas, malfuncionamiento…)
10 de marzo de 2016 18
19. Tipos de API
• Tradicional
– Pregunta respuesta
– La mayoría
• Streaming
– Conexión permanente
– Algunas como Twitter
10 de marzo de 2016 19
20. Opción 2 - Ficheros
• Muy comunes en la administración
• Suelen estar bien estructurados -> XLS,
CSV…
• Generalmente, para información estática
– Tráfico
– Padrón
– Turismo
– INEM
– …
• Descargar y procesar
10 de marzo de 2016 20
22. Opción 3 - scraping
• Cuando no hay otra alternativa
• Técnica para extraer datos de sitios web a
través de programas
– Ingeniería inversa
• Qué parámetros envía
• Estudiar cómo se estructura la información
• Secuencia de peticiones y reusar datos de las
respuestas
• Estudiar el comportamiento dinámico de la web
• Visitar muchas páginas para conseguir todos los
datos
10 de marzo de 2016 22
26. Parseo
10 de marzo de 2016 26
• Convertir HTML en algo manejable ->
errores
27. Diferencias
• Si lo hiciéramos manuealmente
– API: www.mitienda.com/productos
– Volcado:
www.mitienda.com/descargar_productos
– Scraping:
1. www.mitienda.com/listado -> parseo -> buscar y
extraer identificadores de productos
2. www.mitienda.com/productos?id1 -> parseo ->
buscar y extraer datos
www.mitienda.com/productos?id=2 -> parseo ->
buscar y extraer datos
www.mitienda.com/productos?id=3 -> parseo ->
buscar y extraer datos
…
10 de marzo de 2016 27
28. WEB scrapers/crawlers
• Programas que simulan las visitas que
muchos usuarios harían
• “Engañan” a los servidores haciéndoles
creer que son usuarios
• Pero no son tontos
– Cuestiones legales
– Límites
• Número de páginas vistas
• Por tiempo
• …
10 de marzo de 2016 28
29. Tecnologías
• Existen multitud de herramientas en
distintos lenguajes de programación (Java,
Python, Ruby, …)
• Necesitamos esencialmente
– Herramienta para la conexión (urllib,
requests…)
– Herramienta para parseo y extracción de datos
• HTML y XML (Beautifulsoup, lxml…)
• JSON (json, simplejson)
– Almacenamiento de datos en ficheros, bases de
datos, … -> Con la estructura que nosotros
queramos
10 de marzo de 2016 29
30. Dificultades
• Mecanismos de “defensa”
– Autenticación – cookies de sesión
– Formularios y parámetros especiales
– Enviar cabeceras especiales
– Límites
– Captchas
– Contenido dinámico
• A veces no es posible (o es muy difícil)
emular el navegador (contenido dinámico,
actualizaciones) -> utilizar un webdriver
10 de marzo de 2016 30
31. Webdriver - Selenium
• Abre y controla una ventana de navegador
como si fuera un usuario
• Simula clicks, eventos del ratón,
pulsaciones de teclas, etc.
• Podemos especificarle una secuencia:
1. Conéctate a www.mitienda.com
2. Rellena y envía el formulario de login
3. Ve al listado de productos
4. Entra en todos los productos y descárgame
sus datos
10 de marzo de 2016 31
32. Curiosidad
• Buenas prácticas
– Mira el robots.txt de los sitios que vayas a scrapear
• Honestamente, habría que mirar también las cabeceras x-
robots en HTTP y las tag robots en el HTML
– Controla la velocidad. Si el sitio va lento, baja la
presión
– Y al revés, para más velocidad usa múltiples IPs,
varios scrapers, lanza proxies en la nube…
– No mientas en el UserAgent e indica al sysadmin
una forma de contactarte: email, web…
10 de marzo de 2016 32
34. Índice
• Introducción
• Técnicas y herramientas de extracción de
datos
• Ruido, técnicas de filtrado de datos
• Qué hemos hecho en Aragón Open Social
Data
• Qué ofrecemos al público
• Detección de tendencias
10 de marzo de 2016 34
35. El ruido
• El mismo concepto que con el sonido
• Sabemos cómo descargar, pero
– ¿qué descargamos?
– ¿cómo sabemos lo que realmente nos interesa
y lo que no?
• Definir unos buenos criterios de búsqueda
– Palabras clave
– Fechas
– Geoposición
– …
10 de marzo de 2016 35
37. Prevenir
• Mayor parte -> Búsqueda por palabras
– No seleccionar muchas palabras
• Cuantas más palabras, peor
• Atención a los límites
• Directamente relacionadas -> exclusividad
– Combinar palabras
• Ej: “corte” vs. “corte de luz”
– Que estén directamente relacionadas con lo
que queremos encontrar
• Ej: apagón
– Que no sean demasiado cortas
• Evitar confusiones
10 de marzo de 2016 37
38. Curar
• Técnicas de filtrado -> a posteriori
(imposible hacerlo a mano)
– Identificación del idioma
– Evitar ciertas palabras
• Si aparece junto con otra palabra -> Eliminar
– Blacklists and whitelists dinámicas ->
palabras y/o usuarios
– Cuidado con los spammers
10 de marzo de 2016 38
40. Índice
• Introducción
• Técnicas y herramientas de extracción
de datos
• Ruido, técnicas de filtrado de datos
• Qué hemos hecho en Aragon
Open Social Data
• Qué ofrecemos al público
• Detección de tendencias
10 de marzo de 2016 40
41. Qué hemos hecho en Aragón
Open Social Data
• ¿De qué se habla en Aragón?
• ¿Qué es importante para los
aragoneses?
• ¿Qué puede resultar interesante para los
aragoneses?
• ¿En qué se diferencian los
aragoneses del resto de
España?
10 de marzo de 2016 41
42. Qué fuentes capturamos
• Eventos: Facebook Events, Spain-info
• Texto: Twitter, Facebook, Google+, Blogger,
Blogia, Wordpress
• Wiki: Wikipedia
• Video: Youtube, Vimeo
• Imágenes: Instagram, Flickr, Pinterest
• Lugares: Foursquare
• Código: Github
• Prensa: Heraldo de Aragón, El Periódico de
Aragón, Diario del Alto Aragón, Diario de Teruel
10 de marzo de 2016 42
43. Qué datos capturamos
• Siempre datos públicos
• Que cualquier usuario puede encontrar
por sus propios medios
• Se puede controlar el contenido:
– por la URL
– por el autor
• Un usuario puede solicitar dejar de ser
escuchado
10 de marzo de 2016 43
44. Criterios de captura
• Geoposición
– Dentro de Aragón
– Zonas colindantes
– Nombres de municipios
• Palabras/usuarios clave
– Temas de interés
– Usuarios relevantes para Aragón
– Se realimentan y actualizan con los datos
geoposicionados
10 de marzo de 2016 44
48. Cómo se captura
• Normalmente el usuario ve la
información a través de un navegador
• Necesitamos capturar grandes
volúmenes de información constante
• Filtrado por diferentes criterios
• Herramientas que las redes sociales y
otras webs proveen y scraping
• Límites de las fuentes
10 de marzo de 2016 48
49. Cómo se captura
• Robots, arañas, web crawlers,
scrapers…
• Simulan las visitas que muchos
usuarios harían
• Cada uno se ocupa de una tarea
– Una red social
– Sólo cierta información
• Centralizan la información
– Filtran y “uniformizan”
10 de marzo de 2016 49
50. Cómo se filtra
• Se solicitan sólo los campos que nos interesan,
se eliminan el resto
• 2 tipos: streaming o periódicas
• Las arañas no saben qué contenido es bueno o
malo
– Se captura mucho ruido, especialmenteal buscar
por palabra clave
– No se deben de usar palabras demasiado cortas o
sin significado (preposiciones, artículos…)
– Hay que tener cuidado con otros idiomas. Ej: CAI,
USJ
10 de marzo de 2016 50
51. Cómo se almacena
• Todos los datos son guardados en una
base de datos distribuida
• La cantidad de información capturada
es importante
• En torno a 30 GB al mes, que se reducen
a unos 3 GBs al filtrar
• Alrededor de 1.000.000 de entradas al
mes entre vídeos, fotos, mensajes, etc.
10 de marzo de 2016 51
52. Procesamiento
• Detección de idioma
• Se almacena el criterio que ha hecho que
cierto contenido se capture
• Se calculan ciertos parámetros en base a
los datos capturados:
– Apariciones por cada 1000 palabras de dentro
y fuera de Aragón:
• Temas de interés dentro de Aragón
• Diferenciales
• Acumulados por 30, 60 y 90 días
10 de marzo de 2016 52
53. Cómo se accede a la
información
• Creamos una API
10 de marzo de 2016 53
62. Qué ofrecemos al público
• LO QUE NOS GUSTARÍA TENER
• Una API que permite acceder a los
datos recogidos y filtrados
• Totalmente pública, sin necesidad de
registro (aunque con algún límite)
• Se pueden acceder a los datos antiguos
hasta 12 meses (por el momento
disponemos desde diciembre de 2013)
10 de marzo de 2016 62
63. Cómo usar nuestra API
• Peticiones HTTP como las que hace
cualquier navegador
• El usuario sólo tiene que indicar qué datos
desea obtener y cómo los quiere filtrar
– Dirección (/trendings o /data)
– Parámetros (?source=twitter)
• Librerías en distintos lenguajes que hacen
muy sencillo su uso
10 de marzo de 2016 63
64. Qué formato tienen los resultados
• Actualmente en formato JSON
• Los resultados aparecen paginados
• Ordenados cronológicamente
10 de marzo de 2016 64
67. Contenido
• id: entero identificativo del elemento.
• type: cadena que indica el tipo de contenido.
• source: cadena de texto que indica a qué fuente pertenece el resultado.
• title: cadena con el título del contenido en el caso de que lo tenga.
• description: contenido del elemento (texto del tweet, descripción del
evento, descripción del vídeo, etc.)
• url: dirección url directa al contenido.
• author: cadena de texto con el nombre del autor en caso de que lo haya.
• starts_on: para los eventos, si la tuvieran, fecha de comienzo.
• ends_on: para los eventos, si la tuvieran, fecha de final.
• published_on: fecha de publicación del contenido.
• lat: latitud del contenido en formato real.
• lng: longitud del contenido en formato real.
• thumbnail: dirección url del thumbnail asociado si lo hubiera.
10 de marzo de 2016 67
68. Contenido
• Dos tipos de paginación:
– Estándar (máx. 1000)
– since_id & max_id
• Todas las fechas tienen el formato: 16/01/14
13:03
• Se puede especificar que la API devuelva los
datos en crudo con el parámetro raw_mode
– /socialdata/data?source=twitter&raw_mode=true
– Nuevo campo en los resultados llamado raw_data
10 de marzo de 2016 68
69. Cómo podemos filtrarla
• Por tipo de contenido
• Por fuente
• Por conversación
• Por geoposición
• Por período
• Por palabra clave
10 de marzo de 2016 69
70. Filtro por tipo de contenido
• /socialdata/data?type=content_type
– event (Facebook Events, Spain-info)
– text (Twitter, Facebook, Google+, Blogger, Blogia,
Wordpress)
– wiki (Wikipedia)
– video (Youtube, Vimeo)
– picture (Instagram, Flickr, Pinterest)
– venue (Foursquare)
– code (Github)
– media (Heraldo de Aragón, El Periódico de Aragón,
Diario del Alto Aragón, Diario de Teruel)
10 de marzo de 2016 70
72. Filtro por conversación
• /socialdata/data?conversat
ion=conversation_type
– geo: conversación sobre lo
que se habla dentro de
Aragón
– rel: conversación de temas y
usuarios relevantes para
Aragón
10 de marzo de 2016 72
73. Filtro por geoposición
• Filtrado por centro y radio
– /socialdata/data?center=coordinates&distance=distance_in_k
m
– /socialdata/data?center=41.35678,-0.8148576&distance=5
• Filtrado por cuadrado geográfico
– /socialdata/data?bbox=min_lng,min_lat,man_lng,max_lat
– /socialdata/data?bbox=-0.8148576,41.35678,-
0.667584,41.78553
• Filtrado por municipio y radio
– /socialdata/data?locality=locality&distance=distance_in_km
– /socialdata/data?locality=Zaragoza&distance=5
• Sólo datos geolocalizados:
– /socialdata/data?source=twitter&geolocated=true
10 de marzo de 2016 73
74. Otros filtros
• Por período:
– /socialdata/data?start_date=start_date&end
_date=end_date
• Por palabra clave:
– /socialdata/data?query=query
• Combinaciones!
10 de marzo de 2016 74
75. Ejemplo de uso
10 de marzo de 2016 75
https://github.com/albertoalcolea/charla-scraping
79. Índice
• Introducción
• Técnicas y herramientas de extracción
de datos
• Ruido, técnicas de filtrado de datos
• Qué hemos hecho en Aragon Open
Social Data
• Qué ofrecemos al público
• Detección de tendencias
10 de marzo de 2016 79
80. Detección de tendencias
• Volumen de tráfico en redes sociales
(twitter, facebook, youtube…)
• Volumen de descargas y compras
(iTunes, Amazon, Spotify, Google Play…)
• Valoraciones
• Charts, top lists (Emisoras de radio,
foros…)
• Volumen de búsquedas (Google)
10 de marzo de 2016 80
81. Qué es un trending topic
• Tendencia o tema del
momento
• Palabras o frases más
repetidas en un
momento concreto en
Twitter
• Origen en los hashtag ->
#etiqueta
• 2 objetivos principales:
– Promoción
– Movilización
10 de marzo de 2016 81
82. Cómo se detecta
• Algoritmo que pesa los términos
– Apariciones
– Novedad de los términos
• Hay temas de los que siempre se habla mucho -
> no son trending topics. Ej: Justin Bieber
• Algunos de los más importantes:
– Wikileaks
– Primavera Árabe
– AcampadaSol
– Muerte de Michael Jackson
– Muerte de Steve Jobs
10 de marzo de 2016 82
84. Robots y spam
• Aprovechan estas tendencias para hacer
publicidad
• Tienen robots similares a los nuestros
– Calculan sus propias tendencias
– Utilizan las de las redes sociales
• Incluyen sus propios hashtags, enlaces,
etc.
• No tienen interacción con otros usuarios
10 de marzo de 2016 84
86. Bola de nieve
• Hacemos detección de tendencias
– Muy costoso -> guardar mucha información,
hacer muchos cálculos periódicamente…
– Lista fija inicial -> perderíamos mucha
información
• Además de las palabras clave iniciales -
> retroalimentación
– Coge nuevas palabras
– Elimina algunas viejas
10 de marzo de 2016 86