Python爬虫系列:使用selenium+Edge查询指定城市天气情况Python
python
Python爬虫系列:使用selenium+Edge查询指定城市天气情况Python
Java
Python爬虫系列:使用selenium+Edge查询指定城市天气情况Python
Hadoop
Python爬虫系列:使用selenium+Edge查询指定城市天气情况Python
操作系统
Python爬虫系列:使用selenium+Edge查询指定城市天气情况Python
正则表达式

话说,国外有个网站http://openweathermap.org/可以免费查询指定城市的当前天气情况:


Python爬虫系列:使用selenium+Edge查询指定城市天气情况Python

那是不是可以写个爬虫程序,自动调用网站的功能来实现天气查询呢?毕竟在网页上已经清清楚楚地显示了这些数据。按惯例,查看源码,却发现啥也木有。


Python爬虫系列:使用selenium+Edge查询指定城市天气情况Python

再仔细检查,发现这个网站是使用javascript动态获取并显示天气数据的:



Python爬虫系列:使用selenium+Edge查询指定城市天气情况Python

Python爬虫系列:使用selenium+Edge查询指定城市天气情况Python

继续查找和分析,原来数据都是在这里的。


Python爬虫系列:使用selenium+Edge查询指定城市天气情况Python

看起来好像很麻烦的样子,还是换个思路吧,等有时间再慢慢分析如何提取这样的数据。回到网站首页,发现该网站还提供了API接口,可以直接调用并以JSON格式返回指定城市的天气数据,但是需要首先拥有一个API key才行:


Python爬虫系列:使用selenium+Edge查询指定城市天气情况Python

如何获取这个API key呢,答案是注册一个账号:


Python爬虫系列:使用selenium+Edge查询指定城市天气情况Python

然而,注册账号时会调用google的验证服务,除非采取特殊手段,否则不会成功,原因不解释。


Python爬虫系列:使用selenium+Edge查询指定城市天气情况Python

两条路都不太顺畅啊,还是再换个思路吧。按道理讲,只要是在网页上显示出来的数据,理论上都应该是可以提取出来的。如果能够模拟浏览器的渲染过程,得到渲染后的前端代码,应该就可以了。


那么怎么模拟呢?让我们拿出一个大杀器,selenium,通过这个扩展库可以驱动几个主流浏览器并调用其功能,这里我们选择使用Edge。

首先,查看一下本地计算机windows操作系统的内部版本号,以我的Win10为例,步骤为:依次单击开始==>设置==>系统==>关于,找到下图中的操作系统内部版本号:


Python爬虫系列:使用selenium+Edge查询指定城市天气情况Python

然后打开网址https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/,下载合适版本的驱动,并放到Python安装目录下:


Python爬虫系列:使用selenium+Edge查询指定城市天气情况Python

接下来,来到命令提示符环境,使用pip安装扩展库selenium:


Python爬虫系列:使用selenium+Edge查询指定城市天气情况Python

最后编写如下Python代码,查询指定城市的天气情况:


Python爬虫系列:使用selenium+Edge查询指定城市天气情况Python

上面代码中的正则表达式是根据driver.page_cource的内容编写的,可以自行分析并逐步尝试,代码运行结果如下(运行过程会稍微慢一点):


Python爬虫系列:使用selenium+Edge查询指定城市天气情况Python

和网页上的数据对比一下:


Python爬虫系列:使用selenium+Edge查询指定城市天气情况Python

内容完全一致。当然,如果使用更整洁的格式查看天气数据,可以使用正则表达式从程序结果中进行二次提取,不再赘述。


欢迎加入本站公开兴趣群

软件开发技术群

兴趣范围包括:Java,C/C++,Pythonphp,Ruby,shell等各种语言开发经验交流,各种框架使用,外包项目机会,学习、培训、跳槽等交流

QQ群:204132433


Hadoop源代码研究群

兴趣范围包括:Hadoop源代码解读,改进,优化,分布式系统场景定制,与Hadoop有关的各种开源项目,总之就是玩转Hadoop

QQ群:204050420

tags: Python,天气,gt,API,Hadoop,数据,调用,网站,查询,正则表达式,代码,网页,microsoft
分页:12
转载请注明
本文标题:Python爬虫系列:使用selenium+Edge查询指定城市天气情况Python
本站链接:http://www.codesec.net/view/573815.html
分享请点击:


1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
技术大类 技术大类 | 大数据技术 | 评论(0) | 阅读(272)