Código para almacenar tweets en un documento .csv sin utilizar la API de Twitter.
En este proyecto vamos a ampliar nuestra investigación del Big Data y las redes sociales. Volvemos a volver a utilizar Twitter como fuente de información pero, en esta ocasión, vamos a recolectar tweets sin necesidad de tener una cuenta en la plataforma.
Para quien no lo conozca, Twitter permite el envío de mensajes en texto plano de corta longitud, con un máximo de 280 caracteres. Estos mensajes, llamados tweets, se muestran en la página principal del usuario y pueden ser capturados a través de una API proporcionada por la propia red social.
Este ejemplo va a consistir en la implementación de un script en Python que almacene todos los tweets que se escriben sobre una temática, un idioma y entre una fechas. D e esta forma, podríamos investigar la opinión de los usuarios de dicha red sobre una temática, usuario o, incluso, analizar la evolución de dichas personas en el tiempo.
El código completo lo puedes descargar en la siguiente url https://github.com/al118345/Tweepy_Example/blob/master/twint_ejemplo.py
Instalación de la librería.
Para utilizar este script, en mi caso, he utilizado la versión de Python 3.8 con la librería Twint https://github.com/twintproject/twint . Exactamente, vamos a instalar dicha librería mediante un pip install -r requirements.txt del repositorio que contiene las siguientes librerías.Análisis del script.
Como podéis observar, el código es muy fácil de entender. El objetivo de esta implementación es buscar todos los tweets en el idioma español (es), que contengan la palabra spain y almacenar los 100 últimos tweets sobre esta temática en el fichero spain.csv
Dicho esto y antes de empezar con las partes más importantes del código, voy a mostrar en la siguientes tabla que información obtenida
| id | conversation_id | created_at | date | time | timezone | user_id | username | name | place | tweet | language | mentions | urls | photos | replies_count | retweets_count | likes_count | hashtags | cashtags | link | retweet | quote_url | video | thumbnail | near | geo | source | user_rt_id | user_rt | retweet_id | reply_to | retweet_date | translate | trans_src | trans_dest |
| 1594720567554281472 | 1594720567554281472 | 2022-11-21 16:53:06 CET | 2022-11-21 | 16:53:06 | +0100 | 185115193 | adabagcompany | Cengiz Adabag | Spain Holiday Warning To Tourists Over Rise In Simple Money Scam https://t.co/LKsLhKfsTl | en | [] | ['https://canadanews.fr/spain-holiday-warning-to-tourists-over-rise-in-simple-money-scam/'] | [] | 0 | 0 | 0 | [] | [] | https://twitter.com/adabagcompany/status/1594720567554281472 | False | 0 | [] | |||||||||||||
| 1594720543592308738 | 1594108325117202432 | 2022-11-21 16:53:00 CET | 2022-11-21 | 16:53:00 | +0100 | 1211036344840904709 | wihanski | Joe Wihanski | @forcacatalunyaa @15ucl @theMadridZone @marca Barcelona players certainly contributed a lot. I have no problem saying that. Now take your own advice. Would Spain have won had Casillas not been there? | en | [] | [] | [] | 0 | 0 | 0 | [] | [] | https://twitter.com/wihanski/status/1594720543592308738 | False | 0 | "[{'screen_name': 'forcacatalunyaa', 'name': 'Ахмед', 'id': '1576198744239968256'}, {'screen_name': '15ucl', 'name': '.', 'id': '1268076732453720065'}, {'screen_name': 'theMadridZone', 'name': 'Madrid Zone', 'id': '1277236151343087617'}, {'screen_name': 'marca', 'name': 'MARCA', 'id': '15095537'}]" | |||||||||||||
| 1594720516312821765 | 1594712466340315137 | 2022-11-21 16:52:54 CET | 2022-11-21 | 16:52:54 | +0100 | 1591115790085914636 | elreycharmeleon | elreycharmeleon | @RahulAgain_ @nocontextfooty Mexico and Ecuador top nations? No netherlands? No spain? No germany? Wtf | en | [] | [] | [] | 0 | 0 | 0 | [] | [] | https://twitter.com/elreycharmeleon/status/1594720516312821765 | False | 0 | "[{'screen_name': 'RahulAgain_', 'name': '`', 'id': '1252584251553439749'}, {'screen_name': 'nocontextfooty', 'name': 'Out Of Context Football', 'id': '1111976778065723393'}]" | |||||||||||||
| 1594720510063087618 | 1594361080322707457 | 2022-11-21 16:52:52 CET | 2022-11-21 | 16:52:52 | +0100 | 1064863268731260929 | dara18spain | 🆘CANARIAS🆘 | @ramonlobo No te dejes lo mejor. ¡Y volvería Franco! https://t.co/nL2BeW7iWf | es | [] | [] | ['https://pbs.twimg.com/tweet_video_thumb/FiGV160XkAE5MAd.jpg'] | 0 | 0 | 0 | [] | [] | https://twitter.com/Dara18Spain/status/1594720510063087618 | False | 1 | https://pbs.twimg.com/tweet_video_thumb/FiGV160XkAE5MAd.jpg | "[{'screen_name': 'ramonlobo', 'name': 'Ramón Lobo 🇺🇦🇪🇺🇪🇸🇫🇷🇬🇧🇱🇺🇻🇪', 'id': '19292516'}]" |
Cómo se puede comprobar, en un tweet se almacena en un fichero .csv con toda la información útil que te pueda interesar cómo puede ser la fecha, el hashtag , usuario , geolocalización, etc. Hay campos vacíos porqué puede que no todos los campos están disponibles, es decir, no siempre tienes disponibles información cómo la geolocalización
Cómo también habrás visto en el código, puedes configurar twint.Config() con los siguientes parámetros:
- Lang = Especificamos el idioma del tweet que deseamos buscar, por ejemplo es 'español' o en inglés.
- Limit = Limite la cantidad de tweets que se desea obtener
- Since = Fecha en la quieres que empiece a recopilar tweets, por ejemplo "2020–01–17 15:51:31"
- Until = Fecha máxima de publicación de los tweets que deseamos obtener, es decir, el momento en que pararemos de almacenar tweets "2020–01–17 17:51:31"
- Store_json = Por si deseas almacenar la info en json
- Ouput = Nombre del fichero dónde se almacenarán los tweets.
Limitaciones actuales y uso responsable
Este artículo debe leerse como un ejemplo educativo. Twitter, ahora X, ha cambiado varias veces sus políticas de acceso, y las herramientas no oficiales de scraping pueden dejar de funcionar cuando la plataforma modifica su frontend, sus límites de uso o sus condiciones legales. Para trabajos en producción suelen ser más estables la API oficial, proveedores de datos autorizados o datasets ya publicados.
El CSV tampoco representa de forma neutral a toda la sociedad: es una muestra de conversación pública. Antes de extraer conclusiones conviene eliminar duplicados, documentar el rango de fechas, guardar la consulta utilizada, revisar el idioma detectado y tratar con cuidado los datos personales. Un notebook reproducible debe explicar cómo se recolectaron los tweets y por qué la muestra es válida para la pregunta de investigación.
Como lectura relacionada puedes consultar tweets geolocalizados con Tweepy y el contexto de datos sociales del proyecto coronavirus.
Explicación en Youtube
Ampliación de información.
Sí quieres ampliar información sobre cómo realizar tareas automatizadas o recolección de tweets te dejo el siguiente enlace para ender cómo funciona la API de Twitter https://1938.com.es/app-coronavirus-twitter o si prefieres un vídeo tutorial visita la siguiente url: https://www.youtube.com/watch?v=vCFioQizM4w