美文网首页爬不动的毛毛虫Python数据分析IT@程序员猿媛
Pandas.read_html() 获取静态网页表格数据

Pandas.read_html() 获取静态网页表格数据

作者: 一只小菠菜 | 来源:发表于2019-04-26 11:30 被阅读50次

环境:Win10 + Cmder + Python3.6.5

需求

  获取 http://www.air-level.com/air/xian/ 的空气质量指数表格数据。骚年,是不是蠢蠢欲动要爬虫三步走了?

代码

我说三行代码就可以轻松搞定, 你信吗?(正经脸):

import pandas as pd
df = pd.read_html("http://www.air-level.com/air/xian/", encoding='utf-8', header=0)[0]
df.to_excel('xian_tianqi.xlsx', index=False)

  然后先来看网页数据:

  再来看Excel中的数据:


  是不是被秀到啦?讲真,我也被秀到一脸...

解释

  read_html()部分源码如下:

# 已省略部分代码,详细查看可在命令行执行:print(pd.read_html.__doc__)
def 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):
    r"""Read HTML tables into a ``list`` of ``DataFrame`` objects.

  Parameters
    ----------
    io : str or file-like
        A URL, a file-like object, or a raw string containing HTML. Note that
        lxml only accepts the http, ftp and file url protocols. If you have a
        URL that starts with ``'https'`` you might try removing the ``'s'``.

    flavor : str or None, container of strings
        The parsing engine to use. 'bs4' and 'html5lib' are synonymous with
        each other, they are both there for backwards compatibility. The
        default of ``None`` tries to use ``lxml`` to parse and if that fails it
        falls back on ``bs4`` + ``html5lib``.

     header : int or list-like or None, optional
        The row (or list of rows for a :class:`~pandas.MultiIndex`) to use to
        make the columns headers.
......

  可以看到,read_html() 方法的io参数默认了多种形式,URL便是其中一种。然后函数默认调用lxml解析table标签里的每个td的数据,最后生成一个包含Dataframe对象的列表。通过索引获取到DataFrame对象即可。

最后

  read_html() 仅支持静态网页解析。你可以通过其他方法获取动态页面加载后response.text 传入read_html() 再获取表格数据。

参考https://mp.weixin.qq.com/s/CuhC7rCD6LPXLO88JVEuJg

相关文章

  • Pandas.read_html() 获取静态网页表格数据

    环境:Win10 + Cmder + Python3.6.5 需求   获取 http://www.air-lev...

  • python数据分析3:数据抽取

    1.使用Pandas获取网页中的表格数据并转化为EXCEL电子表格 # 导入NBA球员的薪资数据 import p...

  • jqGrid常用语法

    jqGrid常用语法整理,包含数据获取、常用函数、触发事件等jqGrid表格数据获取相关语法获取表格所有数据 ...

  • bootstrap-table方法

    初始化表格 销毁表格 刷新表格 获取选中行数据 获取所有行数据 添加请求参数 Bootstrap表格方法-小书童文...

  • Day-43 http服务介绍

    静态网页资源1.1 静态网页资源介绍  在网站设计中,静态网页是相对于动态网页而言,指没有后台数据库,不含程序(如...

  • 比较 BasicSample 和 BasicRxJavaSamp

    1.表格 view 中获取数据

  • Linux_200_动态网页

    动态网页包含了静态网页的内容,以及能够和数据库交互,有后台程序,可以和用户交互的网页动态网页和静态网页一般都是相对...

  • selenium+python对表格数据的操作

    一、直接获取整个表格数据,包含表头 2、如果不要表头,可直接用定位tbody元素,同样的方法获取到表格数据,不包含...

  • Python基础学习20

    爬取静态网页案例: 上面案例可以得到网页代码中内容,即使不设置header头也能获取到。但是,相同代码应用于获取动...

  • js利用Chrome Console实现获取网页表格数据

    最近需要分析页面流量来源,可惜AE平台的数据不能下载,只能自己动手了 方法一, 手动复制 这个方法以前常用,可是一...

网友评论

    本文标题:Pandas.read_html() 获取静态网页表格数据

    本文链接:https://www.haomeiwen.com/subject/peffnqtx.html