抓取网页数据工具(什么样的网页满足条件?_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 ![](http://img.5iqiqu.com/images15/4b/4b43726b75cc19*敏*感*词*82fb977bc3a56c80.png)

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个项目,有效实践数学思想和解决方案。点击下图查看详情/购买!???

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线