pandas100个骚操作三:使用pandas快速爬取数据

大家好,我是你们的东哥。

本篇是pandas100个骚操作的第3篇:利用pandas快速爬取数据

查看全部骚操作可以点击专栏:pandas 100个骚操作


提起爬虫,大家可能都知道requestsbeautifulsoupscrapyselenium等等一些工具库。但其实对于一些日常的网页Table表格数据抓取来讲,没有必要去F12研究HTML页面结构甚至写正则表达式解析字段。

本次东哥介绍一个超级简单的方法,用pandas也可以玩爬虫。

pandas自带一个方法是read_html,利用这个方法可以直接爬虫网页的Table表格型数据,无需敲更多的爬虫代码,简单!粗暴!

查看HTML结构,如果发现是下面这个table格式的,那直接可以上手开干。

<table class="..." id="...">
     <thead>
     <tr>
     <th>...</th>
     </tr>
     </thead>
     <tbody>
        <tr>
            <td>...</td>
        </tr>
        <tr>...</tr>
        <tr>...</tr>
        ...
        <tr>...</tr>
        <tr>...</tr>
    </tbody>
</table>

下面我们来看下如何操作。

一、使用方法

举一个例子,拿wiki百科上的各国家收入的页面抓取演示一下。

在这里插入图片描述

这个页面中有非常多的表格,符合我们的要求,直接使用read_html,它可以自动将网页的所有表格数据全部抓取下来。代码如下:

import pandas as pd
url = 'https://en.wikipedia.org/wiki/Gross_national_income'
tables = pd.read_html(url)

这里返回的tables是一个DataFrames的列表,每个DataFrame就是网页中从上到下顺序的数据表格。因此,可以用列表的切片tables[x]来提取网页指定的表格数据。

比如,我们对第4个表格感兴趣,那么直接:

talbes[3]

在这里插入图片描述
当然,上面表格看起来有点别扭,我们可以简单几个操作调整一下表结构。

df = tables[3].droplevel(0, axis=1)\
.rename(columns={'No.':'No', 'GDP[10]':'GDP'})\
.set_index('No')

在这里插入图片描述

这样看起来就好多了。

最后,read_html中也配有很多参数可供调整,比如匹配方式、标题所在行、网页属性识别表格等等,具体说明可以参看pandas的官方文档学习。

官网链接:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_html.html

以上所有代码已上传至我的GitHub:

项目链接:https://github.com/xiaoyusmd/PythonDataScience

原创不易,GitHub求个Star续命

本系列同步于我的原创公众号:Python数据科学,欢迎关注。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值