玩Python|如何有逼格地查询紫外线强度 !

日来临,又到了一年中防晒的攻坚时刻。紫外线像个磨人的小妖精,让人防不胜防。防晒霜防护值高了又太油太腻,低了又起不到保护的作用。无论是准备出门,还是坐在窗前办公,有什么办法能实时地知道,应该选用什么指数防晒霜呢?

有了紫外线指数,就可以便捷地指导我们需要防晒的等级。紫外线指数越高,紫外线对皮肤的伤害就越强(等下次有空,在科普一篇紫外线与皮肤光老化的文章)。

《玩Python|如何有逼格地查询紫外线强度 !》
《玩Python|如何有逼格地查询紫外线强度 !》

紫外线指数

在手机上,大部分的天气App都没有显示紫外线指数选项,或者不能在屏幕首页直接显示紫外线强度。例如ios自带的天气应用,就需要连续点击几次,才能弹出网页浏览器,在新打开的网页(https://weather.com/ )中看见紫外线强度。

近日闲来无事(上班偷懒),研究一下,怎样能便捷的在电脑上查看每天不同时段的紫外线指数。下文将会使用到Python语言。由于本文涉及Python爬虫程序,没兴趣阅读的朋友可以直接下拉底部。

还是以苹果ios系统中(https://weather.com/ )这个网站为范例。打开网址后,可以查看所需要查询地点的紫外线指数。然而电脑用户打开网页,始终默认显示的地点是北京,如下图:

《玩Python|如何有逼格地查询紫外线强度 !》
《玩Python|如何有逼格地查询紫外线强度 !》

所要趴取数据的目标网站

电脑用户需要点击右侧地图,手动切换所在的城市,才能显示当地的的紫外线指数。比如,我用鼠标随意点击了昆明的西山城区作为示范(大概因为是国外的网站,光载入地图就用了数分钟!!!)。通过分析网址的后缀发现,网址最后的数字为一组经纬度坐标。通过坐标,来切换和显示目标位置的天气状况和紫外线指数。

《玩Python|如何有逼格地查询紫外线强度 !》
《玩Python|如何有逼格地查询紫外线强度 !》

网页元素分析

移动设备比如手机和ipad可以通过GPS或者北斗卫星导航系统来定位得到经纬度坐标。那电脑用户怎么办呢?电脑既没有GPS,也不能像手机可以通过信号基站进行定位。

我们通过宽带访问互联网的时候,无论是独享的专线,还是公司或学校的局域网,宽带的运营商会为这个出口分配一个类似门牌号的地址,叫做公网ip地址。亚洲太平洋地区的ip地址,是由亚太互联网信心中心统一分配和管理的。为了方便管理,理论上,不同的ip段和不同地理区域示相对应的。所以我们可以用公网的ip地址来获得上网地点的经纬度(当然和GPS定位比起来误差很大)。

http://ip-api.com/这个网站,可以自动获得访问该网页的电脑的公网ip,并查询得出ip所属区域的经纬度。我们通过抓取这个网站的返回数据,来得到上网区域的大致经纬度地理信息,如图3。

《玩Python|如何有逼格地查询紫外线强度 !》
《玩Python|如何有逼格地查询紫外线强度 !》

查询经纬度

由此,得出了我们的大致思路:

1.通过http://ip-api.com查询得到ip地址。并用bs4库加正则式,抓取返回的经纬度取值。

2.得到取值后,构建基于当前经纬度位置的https://weather.com/网站的实际访问网址。用xpath抓取得到的紫外线结果

3.加入根据紫外线强度值,给出紫外线防护建议的功能。最后打包生成(.exe)可执行文件。

源码及程序运行效果如下图所示:

《玩Python|如何有逼格地查询紫外线强度 !》
《玩Python|如何有逼格地查询紫外线强度 !》

    原文作者:萌新程序员
    原文地址: https://zhuanlan.zhihu.com/p/62745861
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞