Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save darryllamoureux/6f57a5e0720df2bc3a99135e0fb50e9e to your computer and use it in GitHub Desktop.
Save darryllamoureux/6f57a5e0720df2bc3a99135e0fb50e9e to your computer and use it in GitHub Desktop.
IBM Data Analyst Capstone Project > Week 1 > Lab 4: Collecting Data Using Web Scraping
{
"cells": [
{
"metadata": {},
"cell_type": "markdown",
"source": "<center>\n <img src=\"https://gitlab.com/ibm/skills-network/courses/placeholder101/-/raw/master/labs/module%201/images/IDSNlogo.png\" width=\"300\" alt=\"cognitiveclass.ai logo\" />\n</center>\n"
},
{
"metadata": {},
"cell_type": "markdown",
"source": "# **Hands-on Lab : Web Scraping**\n"
},
{
"metadata": {},
"cell_type": "markdown",
"source": "Estimated time needed: **30 to 45** minutes\n"
},
{
"metadata": {},
"cell_type": "markdown",
"source": "## Objectives\n"
},
{
"metadata": {},
"cell_type": "markdown",
"source": "In this lab you will perform the following:\n"
},
{
"metadata": {},
"cell_type": "markdown",
"source": "- Extract information from a given web site \n- Write the scraped data into a csv file.\n"
},
{
"metadata": {},
"cell_type": "markdown",
"source": "## Extract information from the given web site\n\nYou will extract the data from the below web site: <br> \n"
},
{
"metadata": {},
"cell_type": "code",
"source": "#this url contains the data you need to scrape\nurl = \"https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/IBM-DA0321EN-SkillsNetwork/labs/datasets/Programming_Languages.html\"",
"execution_count": 26,
"outputs": []
},
{
"metadata": {},
"cell_type": "markdown",
"source": "The data you need to scrape is the **name of the programming language** and **average annual salary**.<br> It is a good idea to open the url in your web broswer and study the contents of the web page before you start to scrape.\n"
},
{
"metadata": {},
"cell_type": "markdown",
"source": "Import the required libraries\n"
},
{
"metadata": {},
"cell_type": "code",
"source": "# Your code here\nfrom bs4 import BeautifulSoup # this module helps in web scrapping.\nimport requests # this module helps us to download a web page\nimport pandas as pd\nimport numpy as np",
"execution_count": 27,
"outputs": []
},
{
"metadata": {},
"cell_type": "markdown",
"source": "Download the webpage at the url\n"
},
{
"metadata": {},
"cell_type": "code",
"source": "#your code goes here\n# get the contents of the webpage in text format and store in a variable called data\ndata = requests.get(url).text",
"execution_count": 28,
"outputs": []
},
{
"metadata": {},
"cell_type": "markdown",
"source": "Create a soup object\n"
},
{
"metadata": {},
"cell_type": "code",
"source": "#your code goes here\nsoup = BeautifulSoup(data,\"html5lib\") # create a soup object using the variable 'data'",
"execution_count": 29,
"outputs": []
},
{
"metadata": {},
"cell_type": "markdown",
"source": "Scrape the `Language name` and `annual average salary`.\n"
},
{
"metadata": {},
"cell_type": "code",
"source": "#your code goes here\n#find a html table in the web page\ntable = soup.find('table') # in html table is represented by the tag <table>",
"execution_count": 30,
"outputs": []
},
{
"metadata": {},
"cell_type": "markdown",
"source": "Save the scrapped data into a file named _popular-languages.csv_\n"
},
{
"metadata": {},
"cell_type": "code",
"source": "# Get all rows from the table\nlanguage_list = []\nfor row in table.find_all('tr'): # in html table row is represented by the tag <tr>\n # Get all columns in each row.\n cols = row.find_all('td') # in html a column is represented by the tag <td>\n language = cols[1].getText() # store the value in column 3 as language_name\n salary = cols[3].getText() # store the value in column 4 as annual_average_salary\n language_list.append([language,salary])\n\n# convert to dataframe:\ndf_lang = pd.DataFrame(language_list, columns=['Language','Average Annual Salary']) \n\n# save as csv:\nfilename = \"popular-languages.csv\"\ndf_lang.to_csv(filename)\n\n# now print out the file:\ndf = pd.read_csv(filename, header=1) \ndf",
"execution_count": 61,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 61,
"data": {
"text/plain": " 0 Language Average Annual Salary\n0 1 Python $114,383\n1 2 Java $101,013\n2 3 R $92,037\n3 4 Javascript $110,981\n4 5 Swift $130,801\n5 6 C++ $113,865\n6 7 C# $88,726\n7 8 PHP $84,727\n8 9 SQL $84,793\n9 10 Go $94,082",
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>0</th>\n <th>Language</th>\n <th>Average Annual Salary</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>1</td>\n <td>Python</td>\n <td>$114,383</td>\n </tr>\n <tr>\n <th>1</th>\n <td>2</td>\n <td>Java</td>\n <td>$101,013</td>\n </tr>\n <tr>\n <th>2</th>\n <td>3</td>\n <td>R</td>\n <td>$92,037</td>\n </tr>\n <tr>\n <th>3</th>\n <td>4</td>\n <td>Javascript</td>\n <td>$110,981</td>\n </tr>\n <tr>\n <th>4</th>\n <td>5</td>\n <td>Swift</td>\n <td>$130,801</td>\n </tr>\n <tr>\n <th>5</th>\n <td>6</td>\n <td>C++</td>\n <td>$113,865</td>\n </tr>\n <tr>\n <th>6</th>\n <td>7</td>\n <td>C#</td>\n <td>$88,726</td>\n </tr>\n <tr>\n <th>7</th>\n <td>8</td>\n <td>PHP</td>\n <td>$84,727</td>\n </tr>\n <tr>\n <th>8</th>\n <td>9</td>\n <td>SQL</td>\n <td>$84,793</td>\n </tr>\n <tr>\n <th>9</th>\n <td>10</td>\n <td>Go</td>\n <td>$94,082</td>\n </tr>\n </tbody>\n</table>\n</div>"
},
"metadata": {}
}
]
},
{
"metadata": {},
"cell_type": "code",
"source": "# use the inline backend to generate the plots within the browser\n%matplotlib inline \n\nimport matplotlib as mpl\nimport matplotlib.pyplot as plt\n\nmpl.style.use('ggplot') # optional: for ggplot-like style\n\n# check for latest version of Matplotlib\nprint ('Matplotlib version: ', mpl.__version__) # >= 2.0.0",
"execution_count": 74,
"outputs": [
{
"output_type": "stream",
"text": "Matplotlib version: 3.2.2\n",
"name": "stdout"
}
]
},
{
"metadata": {},
"cell_type": "code",
"source": "#step 1 - clean data\ndf['Average Annual Salary'].replace('[\\$,]', '', regex=True, inplace=True)\ndf['Average Annual Salary'] = df['Average Annual Salary'].astype(float)\ndf.sort_values('Average Annual Salary', ascending=True, inplace=True)\n#del df['0']\ndf = df.set_index('Language')\ndf\n",
"execution_count": 79,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 79,
"data": {
"text/plain": " Average Annual Salary\nLanguage \nPHP 84727.0\nSQL 84793.0\nC# 88726.0\nR 92037.0\nGo 94082.0\nJava 101013.0\nJavascript 110981.0\nC++ 113865.0\nPython 114383.0\nSwift 130801.0",
"text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>Average Annual Salary</th>\n </tr>\n <tr>\n <th>Language</th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>PHP</th>\n <td>84727.0</td>\n </tr>\n <tr>\n <th>SQL</th>\n <td>84793.0</td>\n </tr>\n <tr>\n <th>C#</th>\n <td>88726.0</td>\n </tr>\n <tr>\n <th>R</th>\n <td>92037.0</td>\n </tr>\n <tr>\n <th>Go</th>\n <td>94082.0</td>\n </tr>\n <tr>\n <th>Java</th>\n <td>101013.0</td>\n </tr>\n <tr>\n <th>Javascript</th>\n <td>110981.0</td>\n </tr>\n <tr>\n <th>C++</th>\n <td>113865.0</td>\n </tr>\n <tr>\n <th>Python</th>\n <td>114383.0</td>\n </tr>\n <tr>\n <th>Swift</th>\n <td>130801.0</td>\n </tr>\n </tbody>\n</table>\n</div>"
},
"metadata": {}
}
]
},
{
"metadata": {},
"cell_type": "code",
"source": "# step 2: plot data\ndf.plot(kind='barh', figsize=(10, 6))\n\nplt.xlabel('Average Annual Salary') # add to x-label to the plot\nplt.ylabel('Programming Language') # add y-label to the plot\nplt.title('Average Annual Salary by Progamming Language') # add title to the plot\n\nplt.show()",
"execution_count": 80,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": "<Figure size 720x432 with 1 Axes>",
"image/png": "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q6srJkyYACsrK0RHR2PKlCkoLCyEQqHAokWLNJeVCwsL8fbbb2v2M2DAAAwYMMBYp0FERERkEBIhhDB2CGPJysrCokWLEBAQUKnLwSmBPlWYioiInqiN7z7mZc+qwX4sW0WXj012pFAXDg4OWLp0qbFjEBERERmdyc4pJCIiIiLdsSgkIiIiotp9+biq1MY5L1WJ8z6qBvux8tiHlcc+JKq5OFJIRERERCwKiYiIiIhFIRERERGBRSERERERgUUhEREREYFFIRERERGBRSERERERgUUhEREREYFFIRERERGBRSERERERgUUhEREREYFFIRERERGBRSERERERgUUhEREREYFFIREREREBkBk7gCkoGT/I2BFqtHvGDmAi2I+Vxz6svKrsQ2lkTBXujYiehSOFRERERMSRQiIiImMTQiA/Px9qtRolJSUoKCgwdqQa7969e7W2H4UQMDMzg1wuh0Qi0Xk7FoVERERGlp+fD3Nzc8hkMshkMkilUmNHqvFqez8WFxcjPz8fVlZWOm/Dy8dERERGplarIZNxnIaqjkwmg1qtfr5t9JSlWggKCoKHhwfUajXc3d0xadIkWFpaYvTo0YiOjta0i4uLQ1JSEsaNG4ft27fjl19+gUKhgFqtxvDhw+Hj42PEsyAiIlP3PJf4iHT1vN8rkx4ptLCwwNKlSxEeHg6ZTIYDBw7otF1gYCCWLl2K999/H2vXrn3uSpuIiKgm2rdvH9zd3ZGYmGjsKDq5dOkS3N3dERcXZ/BjDxs2DL///nup5QcOHIC/vz9UKhV69OihNQhVlm3btmHevHn6ivlcTHqk8O9atGiBmzdvPtc29evXh5mZGXJycmBvb6+nZERERNqq+lFnuj7e5/vvv4evry92796NadOmVfq4JSUlep3X9yTv999/jx49eujtOLoqKirCrFmz8OOPP8LNzQ0FBQVISUmp0mMUFxfrbapBrSgKS0pKcP78ebRr1w4AUFhYiBkzZmjWP3z4sMxLxNeuXYOZmRkUCoXW8tjYWMTGxgIAQkND9ZiciKj2UiqVxo5gMPfu3dPrnEJd9v3o0SP873//w86dOzFmzBjMmjULv/zyC7755htERkYCAI4fP461a9diy5YtiIuLw5IlS1BYWIhGjRph5cqVsLGxgY+PD4YPH464uDi88cYbePjwIbZs2YLCwkJ4enpi9erV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\n"
},
"metadata": {}
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "## Authors\n"
},
{
"metadata": {},
"cell_type": "markdown",
"source": "Ramesh Sannareddy\n"
},
{
"metadata": {},
"cell_type": "markdown",
"source": "### Other Contributors\n"
},
{
"metadata": {},
"cell_type": "markdown",
"source": "Rav Ahuja\n"
},
{
"metadata": {},
"cell_type": "markdown",
"source": "## Change Log\n"
},
{
"metadata": {},
"cell_type": "markdown",
"source": "| Date (YYYY-MM-DD) | Version | Changed By | Change Description |\n| ----------------- | ------- | ----------------- | ---------------------------------- |\n| 2020-10-17 | 0.1 | Ramesh Sannareddy | Created initial version of the lab |\n"
},
{
"metadata": {},
"cell_type": "markdown",
"source": " Copyright \u00a9 2020 IBM Corporation. This notebook and its source code are released under the terms of the [MIT License](https://cognitiveclass.ai/mit-license?cm_mmc=Email_Newsletter-_-Developer_Ed%2BTech-_-WW_WW-_-SkillsNetwork-Courses-IBM-DA0321EN-SkillsNetwork-21426264&cm_mmca1=000026UJ&cm_mmca2=10006555&cm_mmca3=M12345678&cvosrc=email.Newsletter.M12345678&cvo_campaign=000026UJ&cm_mmc=Email_Newsletter-_-Developer_Ed%2BTech-_-WW_WW-_-SkillsNetwork-Courses-IBM-DA0321EN-SkillsNetwork-21426264&cm_mmca1=000026UJ&cm_mmca2=10006555&cm_mmca3=M12345678&cvosrc=email.Newsletter.M12345678&cvo_campaign=000026UJ&cm_mmc=Email_Newsletter-_-Developer_Ed%2BTech-_-WW_WW-_-SkillsNetwork-Courses-IBM-DA0321EN-SkillsNetwork-21426264&cm_mmca1=000026UJ&cm_mmca2=10006555&cm_mmca3=M12345678&cvosrc=email.Newsletter.M12345678&cvo_campaign=000026UJ&cm_mmc=Email_Newsletter-_-Developer_Ed%2BTech-_-WW_WW-_-SkillsNetwork-Courses-IBM-DA0321EN-SkillsNetwork-21426264&cm_mmca1=000026UJ&cm_mmca2=10006555&cm_mmca3=M12345678&cvosrc=email.Newsletter.M12345678&cvo_campaign=000026UJ).\n"
}
],
"metadata": {
"kernelspec": {
"name": "python3",
"display_name": "Python 3.7",
"language": "python"
},
"language_info": {
"name": "python",
"version": "3.7.9",
"mimetype": "text/x-python",
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"pygments_lexer": "ipython3",
"nbconvert_exporter": "python",
"file_extension": ".py"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
@priyansh8994
Copy link

wow. loved this

@darryllamoureux
Copy link
Author

@priyansh8994 - Thanks! This was part of the capstone project for the IBM Data Analyst specialization, available on Coursera.org. Check it out - it was very worthwhile, and improved my understanding of not only the languages and technology involved in data analysis, but gave context on how to present data for it to be more meaningful to your audience.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment