【Python笔记】read_html():获取table类型网页表格数据


常见的各种官网都有这样一种情况:

网站中很多表格,我们想对这些表格进行整理汇总、或者是筛选,或者是处理分析

于是我们需要考虑:如何将网页表格数据使用python保存为Excel文件?

  • 如果需要抓的表格很少或只需要抓一次,那么推荐快速抓取法 [引文1]
  • 如果页数比较多,推荐完整爬虫抓取法 [引文2]。解析函数用了BeautifulSoup和css选择器,这种方法定位提取表格所在的id为#myTable04的table代码段,更为准确。

0 基础知识

table类型的表格网页结构

一般情况下,网页的表格数据主要是在<table>标签中,<table>类型的表格网页结构大致如下:

<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>

简单解释上文出现的几种标签含义:

<table>	: 定义表格
<thead>	: 定义表格的页眉
<tbody>	: 定义表格的主体
<tr>	: 定义表格的行
<th>	: 定义表格的表头
<td>	: 定义表格单元

使用pandas的read_html()方法就可以读取标签中的内容。

read_html()函数

pandas.read_html(io,
				 match='.+', 
				 flavor=None, 
				 header=None,
				 index_col=None,
				 skiprows=None, 
				 attrs=None,
				 parse_dates=False,
				 tupleize_cols=None,
				 thousands=', ', 
				 encoding=None, 
				 decimal='.',
				 converters=None,
				 na_values=None,
				 keep_default_na=True,
				 displayed_only=True)

常用的参数:

  • io:可以是url、html文本、本地文件等
  • flavor:解析器;
  • header:标题行;
  • skiprows:跳过的行;
  • attrs:属性,比如 attrs = {‘id’: ‘table’};
  • parse_dates:解析日期

注意:返回的结果是DataFrame组成的list

1 快速抓取法

1.1 思路

这里以NBA Player Salaries - 2020-2021为例,具体步骤如下:

  • step0:查看网页元素。 在目标网页中,右键“审查元素”,发现是<table>类型的网页结构,可以用read_html()抓取。
    在这里插入图片描述
  • step1:确定抓取数据量和网页类型。 表数据共14页,数据量不大;且1-14页的网址只有page的变化,属于静态网页。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值