Web-scraping Glassdoor: Exploring the Data Science Job Market
Introduction:
A few years ago, when I first heard about data science, my ideaΒ about what the job entails was fairly vague. Everyone has heard how it is rapidly growing into an exciting career option, but where actually do most data scientists work, how much do they make, or what skills are most valued?Β I wanted to explore first hand the current state ofΒ data related job market, and what better way to do that than doing a data analysis project on it?
This was also an exciting opportunity to build a project from scratch, where you get your data from the world-wide-web, clean it and then do your analysis on it. As much as I looked forward to doing my analysis, one of my primary objectiveΒ was to get some expertise in web-scraping and data cleaning. There are many great job websites with huge catalogue of current job postings, e.g. Indeed, Monster or even LinkedIn. However, I decided to explore Glassdoor.Β The script used to scrape the website is called, aptly, scrape.py. There is also a file called helper.py from where I import useful functions. Both these files and the analysis notebook can be found on the github repository. The csv file containing the scraped data can be found in this link.
Glassdoor is an American company established in 2007. It started off as a platform where employees can anonymously post reviews about salary and workplace environment. It has grown to be one of the most trusted websites for company research and also for job hunting. Glassdoor provides their own salary estimate for many job posting on the website, and also provides a rating for a company; both of which are partly based on employee reviews.
Questions:
At the outset, I was hoping to answer the following questions.
1.Β Which states have the highest number of data related jobs?
2. Which industries are offering more jobs?Β Which industries have highest mean salaries?
3. Which companies are hiring most?Β Which companies offer highest salaries?
4. Does company size matter?Β Does glassdoor rating have anything to do with salary?
5. Which job positions are mentioned the most?
6. Is there a relationship between job positions and educational qualifications?
7. Which computational skills are most sought after?
8. How does the salary spread look for job positions and educational requirement?
Biggest challenges scraping Glassdoor:
Glassdoor uses javascript to dynamically generate html files. For example, for a particular query Glassdoor will return a number of pages, with 30 job postings on each page. After your first 30 posts, to scrape the thirty first one you have to get to the next page, which can only be accomplished by clicking on the 'next' button.Β Also, to get the detailed information about a job posting, you have to click on another set of buttons. I used selenium to get around this problem. The limitation of that approach is its speed. Scrapy can scrape html files really fast, whereas Selenium emulates a browser and is much slower. Also, to not get banned by the website, I had toΒ put several 'sleep' statements in my code which causes further slow-down.
The second problem with Glassdoor is that it only provides 30 pages for a query.
Although it shows there are many more pages, if you click next after the 30th page, it will tell you that it "can't find the page".
As far as I know, there is no going around it, which is a little deflating. It means that I cannot really scrape all the job postings for a particular location. So, I ended up writing a script, which will randomly create queries for data related jobs for a few major U.S. cities, and then scrape the first 20 to 30 pages.
Eventually, I managed to scrape about 10,000 job postings from Glassdoor. It included company's name, rating, size, industry, the city the job was being offered at, salary range estimated by Glassdoor (on rare occasions, the posting specified a salary) and a detailed description of the job, which sometimes included educational requirement, professional experience and/or preferred skills.
At first, I checked the composition of my sample. It should be noted that my sample is not exactly a random sample, because I searched for jobs for certain U.S cities. A state like California that is represented by three cities, San Francisco, San Jose, and Los Angeles, naturally will be well represented inΒ the sample.
People may also be interested in the mean and median salary in different states.
The west coast states of California and Oregon had highest median salaries, closely followed by New York. But it should be noted that those are also some of the most expensive states in the country. It may be useful to look at salary normalized by living cost. That will tell us which states offer more for your labor. Unfortunately, I didn't have the time to do that adjustment.
Arguably, when it comes to data related jobs, California and New York are the two most important states. I looked at those two states and tried to find which industries in those two states offer the highest number of jobs.
In California, information technology is by far the largest sector. In New York, although IT is still the largest contributor, business services and finance are also major slices of the pie.
The largest industries employing data professionals right now are IT, business services and finance.
We can also look at the salary boxplot for different industries.
Let's also find the top twenty companies in terms of hiring volume. Amazon seems to be a huge employer right now.
When it comes to paying the most, a different set of companies come to the fore.
I also wanted to investigate if company size plays any role when it comes to salary. The finding in this case is not very conclusive. Smaller companies (less than 50 employees) seem to have lower median salary, but the spread of salary is much bigger than the small difference in median seen in data.
Are company ratings meaningful? The company rating has a bimodal distribution, the second peak at 5 possibly coming from a large number of very happy employees. Rating also seems to go up with average salary. I guess paying your employees well, ensures a good rating in Glassdoor.
Most data related jobs are either for a Data Scientist, a Data Engineer or a Data Analyst position. Our sample had a high number of Data Scientist job postings. It is to be noted, in some cases job title mentions two or more of the three classes mentioned.
Not all job postings explicitly mention an educational requirement. For the ones that do, all required at least a bachelor's degree. A large number of Data Science jobs require a PhD. Very few required an MBA.
Python, SQL and R are the most widely valued skills for data related jobs, followed by Java, Hadoop, Spark and Excel.
Conclusion:
As far as web scraping is concerned, this was a challenging project. One limitation of this analysis was that I did not have any historical data. It will be interesting to gather more data in future and keep this analysis going. In future, a more granular look at the job market is possible. For example, we may differentiate between data science/ engineer/analyst positions and find how salary, educational or skill sets requirement differs for different positions.We may also compare this work on Glassdoor with work on other job sites, e.g. Indeed. We may also explore factors like job experience. I believe this analysis can lead to interesting machine learning projects. For example: given your skill sets, can we recommend which jobs you should apply to? Or given location, salary, company size, industry etc. can we predict job satisfaction (rating)?