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

编程知识 更新时间:2023-05-03 01:16:38

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


天气信息爬虫

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

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

话不多说,上教程

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

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

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

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

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

请求过程

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

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

向指定地址发起请求

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

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

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

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

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

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

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

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

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

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

效果展示

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

代码运行效果


作者|编程高手杰瑞

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

点赞、留言、关注

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

更多推荐

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

本文发布于:2023-04-29 20:16:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/064dfd7129d6b375d0b45aaa0ba79986.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:源码   表格   天气   网页   收藏

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!

  • 112056文章数
  • 28526阅读数
  • 0评论数