Reading HTML Content from URLs and HTML Files with Pandas

Python 3: Automating Your Job Tasks Superhero Level: Automate Data Analysis Tasks with Python 3
4 minutes
Share the link to this page
You need to have access to the item to view this lesson.
One-time Fee
List Price:  $139.99
You save:  $40
List Price:  €129.17
You save:  €36.90
List Price:  £110.02
You save:  £31.43
List Price:  CA$191.15
You save:  CA$54.61
List Price:  A$210.08
You save:  A$60.02
List Price:  S$188.77
You save:  S$53.93
List Price:  HK$1,092.75
You save:  HK$312.23
CHF 91.40
List Price:  CHF 127.97
You save:  CHF 36.56
NOK kr1,068.48
List Price:  NOK kr1,495.92
You save:  NOK kr427.43
DKK kr688.44
List Price:  DKK kr963.84
You save:  DKK kr275.40
List Price:  NZ$228.70
You save:  NZ$65.35
List Price:  د.إ514.18
You save:  د.إ146.92
List Price:  ৳16,410.04
You save:  ৳4,688.92
List Price:  ₹11,657.31
You save:  ₹3,330.90
List Price:  RM656.90
You save:  RM187.70
List Price:  ₦201,305.62
You save:  ₦57,520
List Price:  ₨38,987.91
You save:  ₨11,140.19
List Price:  ฿5,087.62
You save:  ฿1,453.71
List Price:  ₺4,505.29
You save:  ₺1,287.32
List Price:  B$717.15
You save:  B$204.91
List Price:  R2,545.11
You save:  R727.22
List Price:  Лв252.39
You save:  Лв72.11
List Price:  ₩191,270.87
You save:  ₩54,652.72
List Price:  ₪514.18
You save:  ₪146.92
List Price:  ₱8,124.45
You save:  ₱2,321.43
List Price:  ¥21,898.07
You save:  ¥6,257.04
List Price:  MX$2,326.14
You save:  MX$664.66
List Price:  QR510.64
You save:  QR145.90
List Price:  P1,887.68
You save:  P539.37
List Price:  KSh18,478.68
You save:  KSh5,280
List Price:  E£6,550.13
You save:  E£1,871.60
List Price:  ብር8,046.40
You save:  ብር2,299.13
List Price:  Kz119,061.49
You save:  Kz34,020
List Price:  CLP$124,379.71
You save:  CLP$35,539.60
List Price:  CN¥993.01
You save:  CN¥283.74
List Price:  RD$8,224.84
You save:  RD$2,350.12
List Price:  DA18,836.81
You save:  DA5,382.33
List Price:  FJ$316.51
You save:  FJ$90.44
List Price:  Q1,087.38
You save:  Q310.70
List Price:  GY$29,320.35
You save:  GY$8,377.84
ISK kr13,848.61
List Price:  ISK kr19,388.61
You save:  ISK kr5,540
List Price:  DH1,389.92
You save:  DH397.15
List Price:  L2,473.55
You save:  L706.77
List Price:  ден7,958.15
You save:  ден2,273.92
List Price:  MOP$1,125.85
You save:  MOP$321.69
List Price:  N$2,539.14
You save:  N$725.52
List Price:  C$5,155.83
You save:  C$1,473.20
List Price:  रु18,663.10
You save:  रु5,332.69
List Price:  S/524.70
You save:  S/149.92
List Price:  K544.20
You save:  K155.49
List Price:  SAR525.03
You save:  SAR150.02
List Price:  ZK3,617.21
You save:  ZK1,033.56
List Price:  L642.65
You save:  L183.62
List Price:  Kč3,193.84
You save:  Kč912.59
List Price:  Ft50,002.94
You save:  Ft14,287.57
SEK kr1,072.36
List Price:  SEK kr1,501.36
You save:  SEK kr428.99
List Price:  ARS$124,487.26
You save:  ARS$35,570.33
List Price:  Bs967.89
You save:  Bs276.56
List Price:  COP$536,181.17
You save:  COP$153,205.56
List Price:  ₡71,769.17
You save:  ₡20,506.94
List Price:  L3,461.75
You save:  L989.14
List Price:  ₲1,051,649.55
You save:  ₲300,492.76
List Price:  $U5,378.94
You save:  $U1,536.95
List Price:  zł551.05
You save:  zł157.45
Already have an account? Log In


Okay, we've seen how to load and read data from various file formats. But can we do the same for HTML content using pandas? The answer is absolutely yes, you can find the link attached to this lecture pointing to the section of the pandas documentation, where HTML is discussed in detail. For now, the first thing you should do in order to avoid any errors while using the HTML specific methods in pandas is to install an additional module that pandas needs in order to process HTML and XML data. And that module is called El XML. So just go to your CMD and type in pip install el XML.

I've already installed it but you should pause the video and do it before moving on to the rest of this lecture. Okay, for instance, let's say that we want to identify load read and analyze a table that is located on a web page. As always, we want to have that table loaded as a data frame in our code. To be even more granular, I chose a web page that contains several tables. So you can also learn how to reference and pick the desired table for your Python needs. First of all, let's define the URL where the webpage and tables are located.

So I'm going to consider this Wikipedia page, I'm going to copy the URL and I'm going to head over to the Jupiter notebook where I will create a variable called URL equals and I will pass the actual link as a string. So open and close double quotes and paste the link right here, Shift Enter. Now let's have a look at the page at this URL and see how many tables are there on the page. As you can see, this is the Wikipedia page of the Python programming language. Now we can see a table like structure right here. So If we right click and hit inspect, we can see that this is indeed a table.

Now let's scroll down. And let's see if we have other tables on this page. For instance, we have this table right here. So let's hit inspect as well. And indeed, this is a table yet another table on this page. Okay, so we have identified several tables in this web page.

Let's assume we want to load this table right here, which contains pythons built in data types as a data frame in our code. For this, the first thing we should do is use the read underscore HTML method that pandas provides for this purpose. So let's return to our notebook. and type in D equals pandas dot read underscore HTML. And in between the parentheses of this method, we simply pass the URL variable that we previously defined. Let's also check D Shift Enter.

Okay, so we can immediately notice by scrolling down through this entire result that we have a list returned, where each table structure on the webpage is an element of this list. So notice the square brackets at the end. And at the beginning of this list, and also these tables being separated by comma, as you can see right here, for example, and also down below, and so on until the end of this list. Now, if we look closely, the table of data types that we're looking to get is the second element of the list. So this would be the one right here. Therefore, to read and load only the table that we're interested in, we would need to use an index, right?

So we have a list, so why not use basic indexing? This means if we go back to our syntax up here, let me copy and paste it. We have pandas dot read HTML of URL, Let's insert the index one in between square brackets. And now if we check the shift enter, we indeed have the table of data types returned as a pandas object, a panda's data frame. Okay, great job. This is exactly what we were looking to achieve.

There are other things I could have mentioned about handling HTML data with pandas. But I let you discover more on your own in the link attached to this lecture. Moreover, we will use HTML data yet again in the application we're going to build at the end of this section. And you're going to learn new things as we discuss these applications code. But more on that later for now. I hope you enjoyed this video.

And I'll see you in the next one where you are going to learn about indexing and slicing tables with pandas. See you in the next one.

Sign Up


Share with friends, get 20% off
Invite your friends to LearnDesk learning marketplace. For each purchase they make, you get 20% off (upto $10) on your next purchase.