Extracción de datos de Twitter con Python (sin consumir la API)

Jun 20, 2021 | NLP, Python | 0 Comentarios

La popular red social Twitter es usada por millones de usuarios diariamente y nos ofrece una ingente cantidad de datos que podemos recopilar con las herramientas adecuadas. Estos datos y mensajes de Twitter son de gran valor y podrían ser utilizados, por ejemplo, por una empresa que quiera estar al tanto de lo opinan los clientes sobre su marca.

En esta publicación os enseñaremos como poder extraer datos de esta red social en Python mediante la librería Twint. De esta forma, podremos obtener facilmente los últimos tweets que contengan cierta palabra o que pertenezcan a un determinado usuario y aplicar varios filtros a nuestra extracción.

¿Por que elegimos la librería Twint frente al resto de opciones disponibles en Python para la extracción de datos de Twitter? La razón principal es que no tenemos que utilizar la API de twitter, por lo que tampoco será necesario tener que registrarnos para obtener los datos. Esto significa que tampoco tenemos que preocupanos por los límites establecidos para la API de Twitter. Además, Twint es una librería rápida y muy fácil de utilizar.

 

Instalación de Twint

Lo primero de todo será instalar la librería Twint con pip y para ello no hay más que ejecutar el comando:

pip3 install twint

Además, si vas a ejecutar la búsqueda de tweets en un Jupyter Notebook, es muy posible que te aparezca es siguiente mensaje de error:

RuntimeError: This event loop is already running

Una solución común para este problema consiste en insertar las siguientes dos líneas en nuestro código:

import nest_asyncio
nest_asyncio.apply()

 

Configuración de Twint para extraer tweets sobre la Eurocopa

Para esta primera prueba vamos a recopilar y almacenar en un fichero JSON los últimos 10000 tweets que hablen sobre la Eurocopa. Primeramente, importamos la librería necesaria:

import twint

Es hora de configurar y aplicar los filtros deseados a nuestra búsqueda de tweets y para ello simplemente creamos un objeto Config, que nos proporciona Twint, al cúal le vamos asignado alguna de las siguientes configuraciones:

  • Search: podemos usar este ajuste para extraer unicamente los tweets que contengan cierta palabra.
  • Username: para extraer los tweets de un usuario (no incluye los retweets pero sí las respuestas).
  • Lang: idioma de los tweets. Twint no es infalible y es posible que os encontréis tweets en otros idiomas a pesar de haber utilizado este filtro. Sin embargo, podremos deshacernos facilmente de estos tweets de idiomas no deseados posteriormente.
  • Filter_retweets: para excluir los retweets de los resultados.
  • Limit: con este ajuste le indicamos el número máximo de tweets a recopilar.
  • Output: dirección del fichero donde queremos alamacenar los datos.
  • Since: para extraer los tweets que se han publicado desde la fecha que consideremos.
  • Until: para recopilar los tweets que se han publicado hasta la fecha que queramos.
  • Min_likes: número mínimo de likes que deben tener los tweets extraidos.
  • Min_replies: número mínimo de respuestas.
  • Min_retweets: número mínimo de retweets.
  • Pandas: usaremos este ajuste si queremos almacenar los resultados en un Dataframe de la libería Pandas.

Podéis ver la lista completa de opciones de configuración aquí.

En el siguiente ejemplo práctico, podeís ver un ejemplo de como configurar Twint para recopilar y almacenar en un fichero JSON los último 10000 tweets de este año en español que contengan el término "eurocopa" y que tengan más de 5 likes, retweets y respuestas:

 

import twint
import nest_asyncio
nest_asyncio.apply()

c = twint.Config()
c.Search = "eurocopa"
c.Lang = "es"
c.Filter_retweets = True
c.Limit = 10000
c.Since = '2021-01-01'
c.Output = "./tweets.json"
c.Min_likes = 5
c.Min_replies = 5
c.Min_retweets = 5

Fácil. ¿verdad? Para poner en marcha el rastreo simplemente debemos ejecutar el siguiente comando:

twint.run.Search(c)

Una vez finalizado la recopilación de tweets, veremos los resultados en el fichero tweets.json. Entre la información extraída, tendremos el texto del mensaje, la fecha de publicación y el nombre del autor.

En el siguiente código tenéis un ejemplo de como recopilar y almacenar en un Dataframe de Pandas los tweets publicados por el perfil de Twitter de Elon Musk:

c = twint.Config()
c.Username = "elonmusk"
c.Lang = "en"
c.Filter_retweets = True
c.Limit = 10000
c.Pandas = True

Una vez finalizada la extracción, podemos acceder al Dataframe y asignarlo a una variable de la siguiente manera:

tweets = twint.storage.panda.Tweets_df

 

Este ha sido todo por hoy. En esta ocasión hemos aprendido a extraer mensajes y datos de la red social Twitter con la librería Twint de manera muy sencilla y sin hacer uso de la API. Más adelante os mostraremos como podeís el contenido de estos tweets, por ejemplo, para el análisis de sentimiento. ¡Hasta la próxima!

 

También te puede interesar:

5 trucos para Jupyter Notebook que no debes perderte

Descubre 5 trucos para Jupyter Notebook no tan conocidos que te ayudarán familiarizarte más con esta herramienta y ser más eficiente.

Extracción de datos de sitios web con Scrapy (I): recopilando información de productos de Zara

En este tutorial explicamos como extraer con Scrapy los datos de la web de Zara de forma automatizada para finalmente almacenarlos en MongoDB.

Otros 5 trucos de Jupyter Notebook que probablemente desconozcas

En este artículo se explican 5 nuevos trucos para Jupyter Notebook que probablemente desconozcas y que mejorarán vuestra productividad.

Extracción de datos de sitios web con Scrapy (II): rastreando todas las URLs del sitio web de Zara

En este post construimos un rastreador con Scrapy que extrae los datos de manera recursiva todas las URLs del sitio web de Zara.

Introducción al topic modeling con Gensim (I): fundamentos y preprocesamiento de textos

En esta publicación entenderéis los fundamentos del topic modeling (modelo LDA) y se mostrará como realizar el preprocesamento necesario a los textos: tokenización, eliminación de stopwords, etc.

Introducción al topic modeling con Gensim (II): asignación de tópicos

En esta publicación aprenderás como entrenar un modelo LDA con noticias periodísticas para la asignación de tópicos, usando para ello la librería Gensim de Python.

Introducción al topic modeling con Gensim (III): similitud de textos

En este post mostramos como utilizar la técnica de topic modeling para obtener la similitud entre textos teniendo en cuenta la semántica

Sentiment analysis en críticas de películas mediante regresión logística

El sentimiento de análisis es una técnica que nos permite identificar la opinión emocional que hay detrás de un textol. En este artículo mostramos como construir un modelo de predicción capaz de distinguir entre críticas positivas y negativas. Estas críticas han sido descargadas previamente de la web de filmaffinity.

Aplicación de la Distribución t de Student en Python: Ejemplos prácticos

Distribución t en Python: Aprende cómo aplicar la Distribución t en Python con ejemplos para pruebas de hipótesis e intervalos de confianza.

Aprendiendo Bootstraping con Python

Aprende cómo aplicar el bootstraping en la práctica utilizando Python. Explore casos de uso y ejemplos de código para fortalecer tus habilidades estadísticas.

Ads Blocker Image Powered by Code Help Pro

Por favor, permite que se muestren anuncios en nuestro sitio web

Querido lector,

Esperamos que estés disfrutando de nuestro contenido. Entendemos la importancia de la experiencia sin interrupciones, pero también queremos asegurarnos de que podamos seguir brindándote contenido de alta calidad de forma gratuita. Desactivar tu bloqueador de anuncios en nuestro sitio nos ayuda enormemente a lograrlo.

¡Gracias por tu comprensión y apoyo!