网页表格抓取( Table表格型数据网页结构?用pd._html)
优采云 发布时间: 2021-10-01 23:26网页表格抓取(
Table表格型数据网页结构?用pd._html)
最简单的爬虫程序:用熊猫抓取表数据
让我们承认,使用pandas爬行表数据存在一些限制
它仅适用于捕获表数据。让我们先看看什么样的网页符合条件
什么样的网页结构
当您使用浏览器打开网页并使用F12查看其HTML结构时,您会发现合格的网页结构具有一个共同的功能
如果您发现HTML结构采用下表格式,则可以直接使用pandas
...
...
...
...
...
...
...
这看起来并不直观。它开启了北京空气质量的新篇章网站
F12。左边是网页中的质量索引表。其网页结构完全符合表数据网页结构
它非常适合和熊猫一起攀爬
pd.read uhtml()
Pandas提供了read_html(),to_html()两个函数用于读取和写入html格式的文件。这两个函数非常有用。一种是容易地将复杂的数据结构(如dataframe)转换为HTML表;另一个可以在几行代码中获取表数据,而无需复杂的爬虫程序。这是人工制品![1]
特定pd.read uhtml()参数,可以查看其官方文档:
现在直接把刚才的网页打开
import pandas as pd
df = pd.read_html("http://www.air-level.com/air/beijing/", encoding='utf-8',header=0)[0]
这里只添加了几个参数。Header是指定列标题的行。对于guide包,只需要两行代码
df.head()
对比结果表明,成功地获得了表格数据
多表
在最后一个案例中,我不知道我的朋友是否注意到了
pd.read_html()[0]
对于pd.read uhtml()获得网页结果后,添加[0]。这是因为网页上可能有多个表。在这种情况下,需要使用列表的切片表[x]指定要获取的表
例如,在网站中,空气质量排名页面显然由两个表格组成
此时,如果您使用PD。阅读HTML()以获取右侧的表,只需稍加修改即可
import pandas as pd
df = pd.read_html("http://www.air-level.com/rank", encoding='utf-8',header=0)[1]
相反,您可以看到页面右侧的表已成功获取
以上是PD。阅读uhtml()以简单地抓取静态网页。但是我们使用Python的原因是为了提高效率。但是,如果只有一个网页,则鼠标更容易选择复制。因此,Python操作的最大优势将体现在批处理操作上
批量爬网
让我们向您展示如何使用pandas批量抓取Web表数据
以新浪金融机构持股汇总数据为例:
总共有47个页面,47个网页URL是通过for循环构建的,然后是pd.read uuhtml()循环爬网
df = pd.DataFrame()
for i in range(1, 48):
url = f'http://vip.stock.finance.sina.com.cn/q/go.php/vComStockHold/kind/jgcg/index.phtml?p={i}'
df = pd.concat([df, pd.read_html(url)[0]]) # 爬取+合并DataFrame
或者几行代码,很容易解决
共获得47页和1738条数据
通过以上小案例,相信您可以轻松掌握熊猫表数据的批量抓取