Data Scraping and Analysis of Online Articles From GreenTech
The skills the author demoed here can be learned through taking Data Science with Machine Learning bootcamp with NYC Data Science Academy.
Contributed by Thomas Kassel. He is currently enrolled in the NYC Data Science Academy remote bootcamp program taking place from January-May 2017. This post is based on his third class project, web scraping, focusing on the use of web scraping techniques to acquire, process and analyze raw data from the web.
Introduction
Clean technology continues to to advance with support from technological innovation, sustainability projects, financial incentives, and political programs. Given the fieldβs large scope, there is no shortage of media outlets covering the action. With the goal of tracking and analyzing recent cleantech news, I developed a web scraping framework using Pythonβs Scrapy, conducted natural language processing on the scraped data with Pythonβs TextBlob and visualized the results using Rβs ggplot2.
Cleantech News Sources
Greentech Media is a leading provider of online media and research in the cleantech world, with an in-depth focus on renewables, energy efficiency, energy storage, grid modernization, green financing and environmental policy. I scraped 100+ online articles from the previous 3 months for the following information:
- Article theme (singular, general topic of the article e.g. βsolarβ or βelectric vehiclesβ)
- Article tags (multiple, specific sub-topics referenced in the article e.g. βrooftop solar,β βcalifornia,β or βtrumpβ)
- Main article text
- Number of reader comments
Cleantech 100 is an annual ranking of the top 100 up-and-coming companies in the cleantech community βmost likely to have a big commercial impact in a 5-10 year timeframe.β The 2017 rankings were scraped from Cleantech 100βs website and the company names were used as anchors for text recognition in the Greentech Media articles.
Data Access
Pythonβs Scrapy framework is a fast and flexible web scraping method based upon the use of βspidersβ (scripts with html parsing instructions) to gather online information and store it for further use. In this instance I used a specific Scrapy class called βcrawl spider,β created by defining start URLs, a set of rules to inform the spider which links on the start page to follow, and set of instructions (specific xpath references) on how to parse, extract and save fields from the html at the destination page.
Letβs take a look at the spider used to gather information from Greentech Mediaβs articles.
For each article - 107 in total - the attributes (theme, tags, text body) were then stored as a Python dictionary in JSON format for further use. The 2017 Cleantech 100 companies were scraped using a very similar framework.
Natural Language Data Processing/Analysis
With the scraped data stored locally, I conducted text processing on the Greentech Media articles through the use of regular expressions, word/phrase frequencies, and sentiment analyzers from the Python TextBlob framework. The following questions were explored:
Topic Popularity - which cleantech topics have been most frequently covered in recent months?
As illustrated below, electric vehicles, policy, and energy storage are covered by 10 or more articles, collectively making up about a third of all articles published on Greentech Media in recent months. Interestingly, politics are usually of secondary focus on the website. Perhaps more policy coverage has been warranted lately, given the current political climate and uncertainty around the Trump administrationβs effect on environmental issues.
Reader Reactions - how much reader interaction are the articles fostering? Do certain topics elicit larger reactions from the websiteβs reader base?
Greentech Mediaβs readers have the ability to submit their own two cents on a newsfeed-like comments section. We can observe from the histogram below that although many articles go uncommented (far left bin of each facet), a healthy number of articles elicit anywhere from 10-100 comments, with some generating more than 150. That may be due to the fact that certain polarizing themes spark more comments than a more objective or non-political topic. For example, most articles tagged with βenergy storageβ are uncommented; most articles tagged with βdonald trumpβ show ~60 comments.
Proper Nouns - which entities receive high coverage from Greentech Media?
To get a pulse on the current βplayersβ in the cleantech community, I conducted text searching for groups of proper nouns in all the articles. Lists of cleantech countries, people and companies were generated ad-hoc off of background knowledge, and a list of cleantech startups, as described earlier, was scraped from the Cleantech 100 online website.
- Countries β countries playing a major role or with interests in the cleantech transformation
- People β people with high influence or power (financial clout, political influence, thought leadership) in the cleantech industry
- Companies β large, incumbent companies which are currently advancing, or have high potential to advance, the cleantech industry
- Startups β early-stage companies with potential to have a large future impact on the industry
Regular expressions were used to identify total word counts for each proper noun. Additionally, using TextBlob, sentences from all articles were tokenized and analyzed for the relative polarity and subjectivity of that sentence. TextBlob gives each sentence a numeric polarity score ranging from -1 to 1, with a value of -1 indicating highly negative content and a value of 1 indicating highly positive content (0 being neutral); it also assigns each sentence a subjectivity score from 0 (completely objective) to 1 (completely subjective). An average for each of these scores was calculated across all sentences containing at least one mention of the given noun.
Countries
Since sentiment analyzers are an imperfect product of their training library, the choice of training library is an interesting tuning parameter, albeit beyond the scope of this blog post. The default sentiment analyzer used by TextBlob, and in this analysis, is trained using the pattern library.(Countries) The U.S. receives by far the most mentions in Greentech Mediaβs articles. Developing nations China and India, although having less private cleantech innovation, are extremely relevant players in the global environmental discussion.
(People) Cleantech magnate and entrepreneur Elon Musk is frequently mentioned, often with a slightly positive and subjective tone. Surprisingly, Donald Trump and Scott Pruitt (new EPA secretary), staunch opposers of the environmental agenda, are also mentioned in a positive light. This could be generally due to rising economic tides (and associated cleantech investment) during their administration so far.
(Large Companies) Elon Muskβs revolutionary electric car company, Tesla, although smaller than enormous global brand GE (General Electric), is helping to define the cleantech industry and mentioned very frequently in the articles.
(Startups) Unlike the other three lists, some startups tend to have slightly negative associations, perhaps due to the inherent uncertainty, risk and high failure rate of a startup environment. However, on the other end of the spectrum, Greentech Mediaβs articles appear to be in agreement with Cleantech 100βs high endorsement of some energy storage/grid modernization providers (Stem, Blue Pillar, etc) depicted in the top right.