Twitter está comenzando a apoderarse del ámbito de las redes sociales. A medida que más comunidades se trasladan a Twitter, comenzamos a ver lo valiosos que son los datos para los anunciantes, los investigadores e incluso los consumidores.
Los datos son ahora la próxima fiebre del oro a medida que comenzamos a comprender cómo los datos necesita ser extraído, transformado, cargado y, para beneficio completo, convertido en Información. En teoría, como el oro, los datos son una mercancía.
En este artículo, planeo explicar lo fácil que es extraer tweets de Twitter en Python3 usando la API de Twitter de Tweepy. Se puede acceder a estos datos mediante la API de Twitter y Tweepy, que resultó ser el método más exitoso. Planeo concentrarme en extraer respuestas de Tweets de usuarios específicos, ya que no he descubierto ningún tutorial que destaque específicamente cómo extraer respuestas de Tweets.
Si desea pasar directamente al código, puede encontrar el código completo en mi Github . El código de Python requiere su API de Twitter y claves de consumidor, así como el nombre de usuario de Twitter del que planea extraer las respuestas y la ID del Tweet.
Asegúrese de tener Python instalado en su máquina. Si no lo hace, sugiero usar Anaconda ; de lo contrario, lea la documentación oficial de Python para encontrar recursos adicionales.
Para realizar operaciones de Twitter desde su máquina, sugiero usar Tweepy . Para instalar Tweepy, navegue hasta su entorno y ejecute:
Python3:
pip install tweepy
Si está utilizando Anaconda para Python:
conda install -c conda-forge tweepy
Si desea interactuar con Twitter desde una computadora o máquina, deberá presentar una solicitud para desarrolladores de Twitter . La aplicación es sencilla, sea honesto con sus intenciones dentro de la aplicación y será aprobado si Twitter lo considera confiable. Una vez aprobado, podrá crear una aplicación en la plataforma que le proporcione credenciales para autorizar desde Tweepy o su biblioteca de Twitter de Python.
Twitter para desarrolladores brinda acceso a la API de Twitter para publicar y analizar tweets, optimizar anuncios y crear experiencias de cliente únicas. Consulte la documentación de la API de Twitter aquí .
Antes de poder utilizar los extremos de la API de Twitter, cree una cuenta de desarrollador y genere sus claves de API. Puede solicitar una cuenta de desarrollador directamente aquí . Debe responder preguntas sobre cómo planea usar la API y aceptar el Acuerdo de desarrollador de Twitter, y luego se le otorgará acceso al Panel de desarrollador.
Una vez que se le haya aprobado el acceso a Developers for Twitter, inicie sesión en el sitio del desarrollador y cree su aplicación. Este paso generará automáticamente sus claves API de consumidor y tokens de acceso, recuerde, debe mantenerlos en secreto:
La cuenta de desarrollador debe estar vinculada a la cuenta de Twitter donde desea tener activo el bot. Desde la plataforma de desarrollo de Twitter, puede editar los permisos de la aplicación. En mi ejemplo, he otorgado permiso a mi aplicación para leer, escribir y enviar mensajes directos.
Debemos importar Tweepy y luego la interfaz OAuth para recopilar datos, así como csv y ssl.
import csv import tweepy import ssl ssl._create_default_https_context = ssl._create_unverified_context # Oauth keys consumer_key = "YOUR_CONSUMER_KEY" consumer_secret = "YOUR_CONSUMER_SECRET" access_token = "YOUR_ACCESS_TOKEN" access_token_secret = "YOUR_ACCESS_SECRET" # Authentication with Twitter auth = tweepy.OAuthHandler(consumer_key, consumer_secret) auth.set_access_token(access_token, access_token_secret) api = tweepy.API(auth)
Para recopilar respuestas de tweet para un usuario específico y un tweet, debemos enumerar el nombre de usuario del usuario que se raspa, así como la ID del Tweet que se puede encontrar copiando la URL.
# update these for whatever tweet you want to process replies to name = 'LunarCRUSH' tweet_id = '1270923526690664448' replies=[] for tweet in tweepy.Cursor(api.search,q= 'to:' +name, result_type= 'recent' , timeout= 999999 ).items( 1000 ): if hasattr(tweet, 'in_reply_to_status_id_str' ): if (tweet.in_reply_to_status_id_str==tweet_id): replies.append(tweet)
Como esperaba analizar las respuestas, decidí exportar todas las respuestas a un formato de archivo .csv que se puede abrir en Microsoft Excel o Google Sheets.
Aquí hay un breve vistazo del csv devuelto:
user,text CryptoEntuziast,@LunarCRUSH @zilliqa ofcourse 🚀🚀🚀😎😎😎 ecossexrp1,@LunarCRUSH $VET $XRP 👌🏻 crypto19711,@LunarCRUSH @DAPScoin the best privacy coin in this world! https: / /t.co/x FHs3cYFmK lacryptohero,@LunarCRUSH @Theta_Network Greenmi74576867,@LunarCRUSH https: / /t.co/vwmznwu 77V SplendidMite,@LunarCRUSH #VeChain $VET DAPS_CLimaDelta, "@LunarCRUSH Because I am judging a project for the best technology, transparency, reliable team and dedicated commu… https://t.co/6xS9vdx1oY" DigiBur,@LunarCRUSH #digibyte M_SRHI,@LunarCRUSH $ICX 💎 $ELA 💎❤️ $NOIA💎 SURAJ_041,@LunarCRUSH @electroneum #ETN . GbhoyDownUnder,@LunarCRUSH @maticnetwork jodibreeze86,@LunarCRUSH Zilliqa and Vechain ghurabar1,@LunarCRUSH $EWT SamManzi,@LunarCRUSH @NoiaNetwork @NoiaFr $NOIA IamDavidGC,@LunarCRUSH Proud of DigiByte community and technology. $dgb holder2017,@LunarCRUSH @Falcon_SBS #FNT token traded on #exchanges. #Anonymous coin #FNC is not traded anywhere. connected b… https://t.co/0mz7bmaG1k Lilt8888,@LunarCRUSH It would have to be $ICX Creeptwo_guy13,@LunarCRUSH That question is way too easy. Absolutely its $ICX #ICON. BitStreetSheep,@LunarCRUSH #VeChain without question jms3333333,@LunarCRUSH LInk UBT KNC EWT SOLVE einnorka,@LunarCRUSH Digibyte HamishDonalds0n,@LunarCRUSH $icx $vet $zil $ada $eth $link amity3013,@LunarCRUSH $zil you know it elianhuesca, "@LunarCRUSH @decredproject by far: hybrid PoW/PoS blockchain, formal governance in place, Treasury with 10% of bloc… https://t.co/oRnMc4UD5P" AaronMilo,@LunarCRUSH #digibyte https://t.co/000HoTfLqB majjjubu,@LunarCRUSH Chz Benjy25680913,@LunarCRUSH $LUNARCRUSH ItchyTommi,@LunarCRUSH https: / /t.co/y 8l2WwP3qK Stakenet. The one and only siggebaskero,@LunarCRUSH #PIVX thanks to @PIVX _Community who's doing a great job 💜 Engaging with a growing community like… https://t.co/CBlhJm7gZj DanXrp,@LunarCRUSH $VET no doubt crypto1618,@LunarCRUSH #icx thelionshire,@LunarCRUSH ICON $icx ChillMa27939777,@LunarCRUSH #Zilliqa #ZIL ✌😎 BeholdTheBeard,@LunarCRUSH Tezos $XTZ Theta $THETA lennyshots,@LunarCRUSH #DigiByte Shatochzi,@LunarCRUSH $CHZ #chiliz RonDalton01,@LunarCRUSH #VET Realmikeleonard,@LunarCRUSH #XMR no doubt about it Incognitor00st1,@LunarCRUSH $DGB 🔥 Cryptowhale1 0 ,@LunarCRUSH $ICX https: / /t.co/ WQTbyPkpEB XxVegetta,@LunarCRUSH We are DAPS soliders I have been dedicated to our project for 2 years and I think for many years to co… https: / /t.co/ QLk7kKJkhk CaliCryptoCo,@LunarCRUSH $ICX man MoonShotCaller,@LunarCRUSH #VeChain 💙 $VET Dominic_LTC_DGB,@LunarCRUSH @DigiByteCoin GrowlerGregg,@LunarCRUSH $LINK adflondon,@LunarCRUSH We all know its $ICX SajawalOnTech,@LunarCRUSH To many projects but I guess $Wan $link $Zil $Icx IconPilipinas,@LunarCRUSH $ICX jonade,@LunarCRUSH $ZIL twills2,@LunarCRUSH Do we really have to say it...... $zil 🚀
Puede ver todo el código para que esto funcione visitando este enlace .
import csv import tweepy import ssl ssl._create_default_https_context = ssl._create_unverified_context # Oauth keys consumer_key = "XXX" consumer_secret = "XXX" access_token = "XXX" access_token_secret = "XXX" # Authentication with Twitter auth = tweepy.OAuthHandler(consumer_key, consumer_secret) auth.set_access_token(access_token, access_token_secret) api = tweepy.API(auth) # update these for the tweet you want to process replies to 'name' = the account username and you can find the tweet id within the tweet URL name = 'LunarCRUSH' tweet_id = '1270923526690664448' replies=[] for tweet in tweepy.Cursor(api.search,q= 'to:' +name, result_type= 'recent' , timeout= 999999 ).items( 1000 ): if hasattr(tweet, 'in_reply_to_status_id_str' ): if (tweet.in_reply_to_status_id_str==tweet_id): replies.append(tweet) with open( 'replies_clean.csv' , 'w' ) as f: csv_writer = csv.DictWriter(f, fieldnames=( 'user' , 'text' )) csv_writer.writeheader() for tweet in replies: row = { 'user' : tweet.user.screen_name, 'text' : tweet.text.replace( '\n' , ' ' )} csv_writer.writerow(row)
En unas pocas líneas de código, su raspador de respuestas de Twitter configurable ahora extrae datos de Twitter y guarda automáticamente las respuestas de Tweet en su máquina.
Hay algunas cosas que se pueden hacer para mejorar el código, como mapear múltiples respuestas u obtener las respuestas de aquellos que respondieron a la publicación original. Por favor, hágamelo saber en los comentarios si tiene alguna pregunta o sugerencia.
¡El conocimiento es poder! Comparta su conocimiento, abra el código fuente de sus proyectos, participe en una comunidad (¡cualquier comunidad!) y tal vez solo publique una publicación de blog al respecto.
Gracias por leer
La crítica constructiva y la retroalimentación son bienvenidas. Se puede contactar a Nicholas Resendez en Instagram @nirholas , en LinkedIn y Twitter. @nickresendez para actualizaciones sobre nuevos artículos.