beautifulsoup爬取网页中的表格_收藏帖!python实现爬取天气数据,5分钟学会,附源码?...

8f1d42d0fdcbe0f71b7e2f84e41dc1fc.gif

大家好,我是杰瑞,经常更新一些有趣实用的教程,喜欢的就请关注我吧!


天气信息爬虫

海南的天气实在是热得慌,杰瑞被外面燥热的空气“困”在了家里面,也不知道什么时候能下雨天气凉爽一点,好让我出去打打篮球跑跑步啥的,杰瑞也懒得去看天气预报,因为看天气预报又得打开网站、选择地址,然后再自己慢慢从页面分辨出自己想要的天气信息,对于杰瑞这样的“懒癌”患者来说这种情况是不会发生的。

所以杰瑞今天就要从技术上解决“查天气麻烦”这个问题,怎么解决呢?没错!正如标题所述,杰瑞将使用爬虫爬取杰瑞想要的天气信息。

9398fc6e1c68a0d8108b4753a4e0ca01.png

话不多说,上教程

代码部分不是很复杂,所以杰瑞这篇文章里面就主讲实现思路,各位同学跟上杰瑞的思路不要掉队哦!

首先我们的打开一个天气信息网站,然后进行一系列操作找到你所在地区的天气信息,这个展示天气信息的页面就是咱们要爬取的页面,上面有咱们需要的天气信息。

28e745d1cbb4ebb50b21f73c65bfc28e.png

怎么对这个页面入手呢?我们先来分析一下,众所周知,像这样的页面,我们选择的地区不一样,页面显示的数据就不一样,但页面的样式是不会改变的,仅仅改变一些动态的数据而已,例如温度、风力、日期等信息,这样的页面我们称它为:“动态页面”,注意哦,动态页面并不是说这个页面的动画效果哦,而是页面中显示的数据会随着时间或其他事件的变化而变化

那我们如何把这个页面中显示的温度、风力、日期等数据爬取下来呢?

事实上,当我们选择地区让页面显示出该地区的天气信息时,就相当于浏览器和服务器发生了以下行为:

dfe4c0529e2e416437d2295a219eeca7.png

请求过程

实际上,这就是一个浏览器向服务器发起一个请求的过程。所以,如果我们能够用python模拟这个请求过程,那么我们不就可以像浏览器那样接收天气服务器返回的天气信息了吗?

如果你这么想的话,那么恭喜你,思路完全正确!

向指定地址发起请求

我们可以使用python中的urllib库urlopen方法,该方法可以打开一个url(你可以理解为被爬取网页的网址),就像浏览器所做的那样。

1714d768eff0015167fd9f1ec89cd634.png

运行上面这几行代码然后把soup打印出来,我们可以看到这个网页的标签信息、JavaScript代码以及我们想要的数据都显示在控制台窗口中。在这里杰瑞使用了BeautifulSoup库用于解析html数据,具体用法各位同学可以查看相关文档。

f458e9334b49aea41d048f774c36f38d.png

现在问题来了,我们如何从这么多的标签中查找到我们需要的天气数据呢?别急,我们先回到浏览器上,打开我们爬取的那个页面然后按一下F12打开开发者模式,以谷歌浏览器为例,我们将看到以下界面。

05e83ba4007e9155d868338192142526.png

我们打开Elements这个选项卡,在这里可以看到这个页面的所有信息,包括标签信息、JavaScript信息、天气信息,其实Elements窗口中显示的信息和我们在控制台输出的信息是一样的,所以在Elements窗口中我们可以找到需要的天气信息。

这里小编告诉大家一个小技巧,我们用鼠标指向某一行标签时,该标签所渲染的那些元素就会在页面中“高亮”,可以借助这个特性快速找到我们要找的那行标签。

efa6c1c62dd47ad5d9871f00788e4d63.png

如上图,天气信息就在类名为skyidli标签中,现在我们已经就确定了天气信息所在的标签,然后我们回到python编辑器中,我们使用BeautifulSoup中的find方法找到类名为skyid的li标签入口。

0e9803992401e0af701aa7897546cf80.png

然后我们将结果打印出来,可以看到下一下信息:

17c452d594709876fedf7d66baa73c15.png

是不是有点似曾相识?没错,它就是我们在浏览器中看到的那组标签:

e64f16cbfe055507fd0a0116a87ca22e.png

那么接下来,各位同学应该知道怎么做了吧?find()方法我们可以这么理解,他可以返回页面中指定类名、标签中所标记的元素。所以我们可以像下面这样找到所有我们需要的数据:

fbb107aa31efc0c6555173d9045ddd16.png

到这里,我们的教程就完成啦!接下来我们看一下效果。

效果展示

杰瑞爬取的是当天的天气信息,如果有同学想获取其他日期的数据也可参照上面的方法去获取。

da989935ec68723510f0bf2ede99c607.png

代码运行效果

f09b6947495576606b6245fa0d40b458.png
dea34747ed468e898b5a98b5b45e2f0b.png

作者|编程高手杰瑞

各位同学都看到这里了,不如给杰瑞:

点赞、留言、关注

每天更新有趣实用的教程哦!

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值