利用pandas库中的read_html方法快速抓取网页中常见的表格型数据
- table型表格
我们在网页上会经常看到这样一些表格,比如:
QS2018世界大学排名:

从中可以看到table类型的表格网页结构大致如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| <table class="..." id="..."> <thead> <tr> <th>...</th> </tr> </thead> <tbody> <tr> <td>...</td> </tr> <tr>...</tr> <tr>...</tr> <tr>...</tr> <tr>...</tr> ... <tr>...</tr> <tr>...</tr> <tr>...</tr> <tr>...</tr> </tbody> </table>
|
先来简单解释一下上文出现的几种标签含义:
1 2 3 4 5 6
| <table> : 定义表格 <thead> : 定义表格的页眉 <tbody> : 定义表格的主体 <tr> : 定义表格的行 <th> : 定义表格的表头 <td> : 定义表格单元
|
这样的表格数据,就可以利用pandas模块里的read_html函数方便快捷地抓取下来。下面我们就来操作一下。
下面以中国上市公司信息这个网页中的表格为例,感受一下read_html函数的强大之处
1 2 3 4 5 6 7 8
| import pandas as pd import csv
for i in range(1,178): # 爬取全部177页数据 url = 'http://s.askci.com/stock/a/?reportTime=2017-12-31&pageNum=%s' % (str(i)) tb = pd.read_html(url)[3] #经观察发现所需表格是网页中第4个表格,故为[3] tb.to_csv(r'1.csv', mode='a', encoding='utf_8_sig', header=1, index=0) print('第'+str(i)+'页抓取完成')
|
之前买房的时候,爬了一下实时登记情况~~~