python df共有几行_想知道世界谁最有钱?3行Python代码告诉你

导论

想了解世界谁最有钱吗?维基百科有专门的网页来描述世界最有钱的人。当然,为了快速和精确定位符合预期的结果,用Python来爬取网页并分析是一个不错的办法。

但你知道吗?Python中用于执行Web爬网的两个广泛使用的库,BeautifulSoup和Scrapy用起来很麻烦,甚至作诗说“难于上青天”。

为什么呢?因为需要从网页里找到元素标签,然后根据它们提取文本,再清洗数据。而且在这个过程中会遇到各种各样的坑。让初涉其中的同学苦恼不已。“我不就看看有哪些富豪吗?算了,还是用人眼看吧。”

有没有几行就能搞定抓取并分析的办法呢?

常用Python进行数据分析的同学可能不知道,手里使用的熟练工具Pandas却隐藏了精于数据爬取的独家绝技。本文将向您展示如何使用Pandas直接爬取表格数据的简便方法。

6e31e7aec90886492a8bc3a445d98773.png

pandas直接爬取表格数据的简便方法

用Pandas爬取网页,并轻松结构化

本文将从Wikipedia Page提取世界十大亿万富翁的详细信息。(维基百科(Wikipedia),是一个基于维基技术的多语言百科全书写作计划,用多种语言编写的网络百科全书。非营利组织维基媒体基金会负责营运维基百科,接受捐赠。2018年12月,维基百科入围2018世界品牌500强。)

下面将使用read_html的Pandas库的方法读取HTML表。

import pandas as pdurl ='https://zh.wikipedia.org/wiki/The_World%27s_Billionaires'df_list = pd.read_html(url)

该脚本爬取指定链接,并将HTML表返回,并结构化到DataFrame的列表中。

真正的王者,不在于千万般闪亮动作。一个小动作就能完成其他工具库几十行的功能,Pandas,我服了!

接下来查看找到的数据总数:

len(df_list)Output:32

要访问特定的表,只需访问列表的该元素。例如,df_list[2]将返回下表:

1900c83571daf03ae5f59c8443c02fc2.png

df_list[2]将返回下表

进阶玩法之一把世界富豪们做个排名

上面只是介绍pandas的常规玩法,其实可以使用index_col参数来选择表索引的特定列。这里按第二列财富进行排名,从而实现将抓取的世界富豪排名。

3f963e9f0c9e76398cbfdd4ad3f7303e.png

抓取的世界富豪排名

例:

pd.read_html(url,index_col = 1)[2]

返回下表:

80cf2435e2883e34ecf9f4333929a528.png

世界富豪排名

从中看到亚马逊的Jeff Bezos已经成为当仁不让的首富了,第一名了。

进阶玩法之二用自然语言描述来实现自动统计返回

当然,这个题目有点人工智能的味道,但实际并不是这么智能。呵呵,大家原谅下标题党。

这个功能是利用match参数指定返回包含特定字符串或正则表达式的表的列头,从而实现返回对应列头的数据列表功能。

7cdab6c7445e3cae862459a5ac4d9145.png

用自然语言描述来实现自动统计返回

例:

  pd.read_html(url, match='Number and combined net worth of billionaires by year')[0].head()
68690d504d04be844edaa37cdc5d4e43.png

自然语言描述来实现自动统计返回

是不是太神奇了!pandas如何实现的这个功能呢? 看看对应原始网页大家就应该明白了。

1f94687a7ca144bc208dcaf328198947.png

对应网页原始数据

太牛了!pandas直接抓取相对应文本标题的表格并结构化输出。

进阶玩法之三其他参数

skiprows 参数允许我们跳过起始的" n"行

header 参数可用于使指定的行作为列标题

例:

pd.read_html(url,skiprows = 3,header = 0)[0] .head()
839507309fe6467db02e16ac008838ba.png

结论

在本文中,从了解世界富豪排名出发,学习了如何使用pandas的read_html方法轻松地从页面抓取HTML表并进行解析。随后,对read_html一些重要参数也进行讲解,借助这些参数可以进一步让我们轻松抓取所需的内容。

Pandas,不仅仅是数据分析的王者,也是爬虫世界的扫地僧啊。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值