Twitter Scraping

Posted on May 28, 2016

Contributed by Denis Nguyen. He is currently in the NYC Data Science Academy 12 week full-time Data Science Bootcamp program taking place between April 11th to July 1st, 2016. This post is based on his third class project - Web Scraping (due on the 6th week of the program).


Twitter is an online social networking service in which users send short messages called "tweets." Tweets may include media such as pictures, videos, links, making it a very informative source of information. Some people use Twitter as a media outlet and stay up-to-date with current events just by reading Twitter. Others use Twitter to voice their thoughts about events and topics and this has made Twitter a rich source of information for data analytics. By analyzing tweets, one can understand what people may feel about certain events or companies and this becomes valuable actionable information for marketing companies. With the presidential election approaching, I wanted to see what our presidential candidate Donald Trump tweeted the most and how his tweets have changed throughout the campaign.  People have said how his use of Twitter has been an integral part of his campaign and analyzing them would give us more information.


The Data

Donald Trump announced his presidential campaign on June 16, 2015 so tweets from @realDonaldTrump were retrieved from June 1, 2015 to May 20, 2016. Tweets contained text, time of post, hashtags, replies, locations, and number of likes and retweets. The information was organized in the table shown below.



Strategy for Scraping

Twitter provides APIs to help retrieve tweets but because this project was putting what I learned about web scraping to the test, I decided to stick to Python and write my own script to get the data. Upon research, I found out that APIs placed a limit on the amount of information attained but my script does not have this limit. Unfortunately, simply loading the url with Python and retrieving information did not work and would only retrieve 20 tweets. This occurred because Twitter only loads 20 tweets at a time and would load the next 20 when the bottom of the web page was reached. Selenium was used to overcome this obstacle. Selenium opens up the web page in a browser and scrolls down until it reaches the last tweet. Once this is done, it retrieves information and puts it in a table.

Selenium seems to have a limit of 10,000 tweets as the Selenium browser does not look like it can handle all the media in the tweets.

The following code can be adapted to any page.


Likes and Retweets

Upon analyzing the number of likes and retweets, Trump's tweets received, we see a large range in numbers. Likes ranged from 14 to 110,000 while retweets ranged from 2 to 85,000. This large range can be seen in the progression of his tweets. Before he announced his candidacy, his tweets only received a couple hundred likes and retweets but is now averaging a couple thousand likes and retweets. His number of posts has also increased over time so whatever Trump is doing must be working in getting him more attention and media coverage.



Although not all of Trump's tweets have location, it is interesting to see where most of his tweets are coming from. It would make sense that most of his tweets are in the northeast region but other frequent tweet locations occurred in places where he stopped at during his campaign. Some places like United States and Trump Tower are not very specific so it is also questionable how Twitter allows locations to be picked.



Hashstags most frequently used in Trump's tweets are #Trump2016 and #MakeAmericaGreatAgain, which would make sense since those 2 hashtags are his slogan. His top hashtags are political terms/politically related with the exception of #SNL, which is Saturday Night Live. Perhaps Trump has been featured on that show a couple times and therefore he has mentioned them in his tweets.



One way Trump must be using his Twitter to help him stay on people's minds is by tweeting at media. Most of his replies are to media such as @FoxNews and @CNN, with the exception of @JebBush and @Macys. It would make sense that his political opponent is mentioned but we may look further into Trump's association with Macy's.


Word Count

The number of words that Trump uses in his tweets are interesting to analyze. I would think that words pertaining to certain controversial topics would be mentioned but the top words are not negative as people have been saying. After removing "stop words" which are words commonly used in English such as "the" and "is," we have a list of his most frequently used words. Even after removing hashtags and replies in the word count, we see that words from his slogan "Make America Great Again" are in the top list. His name is also used a lot but that may be from quoting articles and tweets about him.



Trump has used Twitter as a way to stay on people's minds and in media's spotlight. The number of tweets made over his campaign has increased and the number of likes and retweets has increased. We do not know if this means that he will win the election but it does show us how much of an impact social media platforms such as Twitter can have on a presidential election.

The following are a couple conclusions after analyzing his tweets:


  • In about a year, Trump has grown the number of likes and retweets from under 50 to a couple thousand per tweet
  • Most of Trump's tweets with location are from Manhattan and New Jersey
  • Trump's 20 most frequent hashtags are political terms, with the exception of #SNL
  • #Trump2016 and #MakeAmericaGreatAgain are the top two
  • Trump tweets at media the most, with the exception of Jeb Bush who is his 4th favorite Twitter buddy
  • 'Trump" appears the most in the tweets, coming from articles and replies

Future steps are to analyze #AskTrump, which was the questionnaire that Trump announced on Twitter. The number of tweets were over 10,000 and Selenium had problems loading all of them so we will want to collect smaller number of tweets at a time and the combine the information. Doing sentiment analysis and seeing how feelings about Trump have changed over time would also give us an idea of how his campaign is going and may help us predict whether he may win the election.

About Author

Denis Nguyen

With a background in biomedical engineering and health sciences, Denis has a passion for finding patterns and optimizing processes. He developed his interest for data analysis while doing research on the effects of childhood obesity on bone development...
View all posts by Denis Nguyen >

Related Articles

Leave a Comment

Mark March 18, 2018
Hello Danis, thanks for sharing this script! I would like to ask you how can I put a limit to the "page scroll" (i.e. move down the page for 5 times, 10 times, 10000 times). Tnx! :)
To Tweet or Not to Tweet… – Ms. Cameron September 26, 2017
[…] Image viaΒ Denis Nguyen […]

View Posts by Categories

Our Recent Popular Posts

View Posts by Tags

#python #trainwithnycdsa 2019 2020 Revenue 3-points agriculture air quality airbnb airline alcohol Alex Baransky algorithm alumni Alumni Interview Alumni Reviews Alumni Spotlight alumni story Alumnus ames dataset ames housing dataset apartment rent API Application artist aws bank loans beautiful soup Best Bootcamp Best Data Science 2019 Best Data Science Bootcamp Best Data Science Bootcamp 2020 Best Ranked Big Data Book Launch Book-Signing bootcamp Bootcamp Alumni Bootcamp Prep boston safety Bundles cake recipe California Cancer Research capstone car price Career Career Day citibike classic cars classpass clustering Coding Course Demo Course Report covid 19 credit credit card crime frequency crops D3.js data data analysis Data Analyst data analytics data for tripadvisor reviews data science Data Science Academy Data Science Bootcamp Data science jobs Data Science Reviews Data Scientist Data Scientist Jobs data visualization database Deep Learning Demo Day Discount disney dplyr drug data e-commerce economy employee employee burnout employer networking environment feature engineering Finance Financial Data Science fitness studio Flask flight delay gbm Get Hired ggplot2 googleVis H20 Hadoop hallmark holiday movie happiness healthcare frauds higgs boson Hiring hiring partner events Hiring Partners hotels housing housing data housing predictions housing price hy-vee Income Industry Experts Injuries Instructor Blog Instructor Interview insurance italki Job Job Placement Jobs Jon Krohn JP Morgan Chase Kaggle Kickstarter las vegas airport lasso regression Lead Data Scienctist Lead Data Scientist leaflet league linear regression Logistic Regression machine learning Maps market matplotlib Medical Research Meet the team meetup methal health miami beach movie music Napoli NBA netflix Networking neural network Neural networks New Courses NHL nlp NYC NYC Data Science nyc data science academy NYC Open Data nyc property NYCDSA NYCDSA Alumni Online Online Bootcamp Online Training Open Data painter pandas Part-time performance phoenix pollutants Portfolio Development precision measurement prediction Prework Programming public safety PwC python Python Data Analysis python machine learning python scrapy python web scraping python webscraping Python Workshop R R Data Analysis R language R Programming R Shiny r studio R Visualization R Workshop R-bloggers random forest Ranking recommendation recommendation system regression Remote remote data science bootcamp Scrapy scrapy visualization seaborn seafood type Selenium sentiment analysis sentiment classification Shiny Shiny Dashboard Spark Special Special Summer Sports statistics streaming Student Interview Student Showcase SVM Switchup Tableau teachers team team performance TensorFlow Testimonial tf-idf Top Data Science Bootcamp Top manufacturing companies Transfers tweets twitter videos visualization wallstreet wallstreetbets web scraping Weekend Course What to expect whiskey whiskeyadvocate wildfire word cloud word2vec XGBoost yelp youtube trending ZORI