抓取网页数据工具(什么样的网页满足条件?_html()也是一个神器)
优采云 发布时间: 2022-03-03 03:17抓取网页数据工具(什么样的网页满足条件?_html()也是一个神器)
继续上面的,我们可以使用 Pandas 将 Excel 转换为 html 格式。文末说了对应的read_html()也是神器!
PS:大家也很乐于助人。我点了30个赞。小舞连忙安排。
最简单的爬虫:用 Pandas 爬取表格数据
有一件事要说,我们不得不承认,用 Pandas 爬取表格数据有一定的局限性。
只适合爬Table数据,那我们先看看什么样的网页满足条件?
什么样的网页结构?
用浏览器打开一个网页,用F12检查它的HTML结构,你会发现合格的网页结构有一个共同的特点。
如果你发现 HTML 结构是下面的 Table 格式,你可以直接使用 Pandas。
1
2
3
4 ...
5
6
7
8
9 ...
10
11 ...
12 ...
13 ...
14 ...
15 ...
16
17
18
19
这看起来不直观,打开了北京地区的空气质量网站。
F12,左侧是网页中的质量指标表,其网页结构完美符合表格数据网页结构。
非常适合和熊猫一起爬行。
pd.read_html()
Pandas 提供 read_html() 和 to_html() 函数用于读取和写入 html 文件。这两个功能非常有用。一种很容易将复杂的数据结构(例如 DataFrames)转换为 HTML 表格;另一种不需要复杂的爬虫,只需要几行代码就可以抓取Table表数据,简直就是神器![1]
具体的 pd.read_html() 参数,可以查看其官方文档:
就拿刚才的网站开始吧!
1import pandas as pd
2df = pd.read_html("http://www.air-level.com/air/beijing/", encoding='utf-8',header=0)[0]
3
4
这里只添加了几个参数,header是指定列标题所在的行。使用指南包,只需要两行代码。
1df.head()
2
3
1 
2
对比结果,可以看到成功获取到表格数据。
多种形式
最后一种情况,不知道有没有朋友注意到
1pd.read_html()[0]
2
3
对于pd.read_html(),获取网页结果后添加一个[0]。这是因为网页上可能有多个表格。在这种情况下,需要通过对列表的tables[x]进行切片来指定获取哪个表。
比如之前的网站,空气质量排名网页显然是由两个表格组成的。
这时候如果使用 pd.read_html() 来获取右边的表格,只需要稍作修改即可。
1import pandas as pd
2df = pd.read_html("http://www.air-level.com/rank", encoding='utf-8',header=0)[1]
3
4
对比一下,可以看到网页右侧的表格是成功获取的。
以上就是使用 pd.read_html() 简单爬取静态网页。但我们之所以使用Python,其实是为了提高效率。但是,如果只有一个网页,用鼠标选择和复制不是更容易吗?所以Python操作的最大优势将体现在批处理操作上。
批量爬取
让我教你如何使用Pandas批量抓取网页表格数据????
以新浪金融机构持股汇总数据为例:
一共有47个页面,通过for循环构造了47个网页url,然后用pd.read_html()循环进行爬取。
1df = pd.DataFrame()
2for i in range(1, 48):
3 url = f'http://vip.stock.finance.sina.com.cn/q/go.php/vComStockHold/kind/jgcg/index.phtml?p={i}'
4 df = pd.concat([df, pd.read_html(url)[0]]) # 爬取+合并DataFrame
5
6
还是几行代码,很容易解决。
共获得47页1738条数据。
通过以上的小案例,相信大家可以轻松掌握Pandas的批量爬表数据????
参考
[1]
Python阅读财经:天秀!Pandas 可以用来写爬虫吗?
《人工智能数学》数学思维体操,学习人工智能的基石!通过205个典型例子+185个推导公式+37个经典习题+40个学习难度提示+19个项目,有效实践数学思想和解决方案。点击下图查看详情/购买!???