温馨提示:有程序和源码的下载地址在底部哦~
夏日来临,又到了一年中防晒的攻坚时刻。紫外线像个磨人的小妖精,让人防不胜防。防晒霜防护值高了又太油太腻,低了又起不到保护的作用。无论是准备出门,还是坐在窗前办公,有什么办法能实时地知道,应该选用什么指数防晒霜呢?
紫外线指数,就可以便捷地指导我们需要防晒的等级。紫外线指数越高,紫外线对皮肤的伤害就越强(等下次有空,在科普一篇紫外线与皮肤光老化的文章)。
在手机上,大部分的天气App都没有显示紫外线指数选项,或者不能在屏幕首页直接显示紫外线强度。例如ios自带的天气应用,就需要连续点击几次,才能弹出网页浏览器,在新打开的网页(https://weather.com/ )中看见紫外线强度。
今日闲来无事(上班偷懒),研究一下,怎样能便捷的用Python爬虫程序在电脑上查看每天不同时段的紫外线指数。还是以苹果ios系统中(https://weather.com/ )这个网站为范例。打开网址后,可以查看所需要查询地点的紫外线指数。然而电脑用户打开网页,始终默认显示的地点是北京,如图1。
电脑用户需要点击右侧地图,手动切换所在的城市,才能显示当地的的紫外线指数。比如,我用鼠标随意点击了昆明的西山城区作为示范(大概因为是国外的网站,光载入地图就用了数分钟!!!)。通过分析网址的后缀发现,网址最后的数字为一组经纬度坐标。通过坐标,来切换和显示目标位置的天气状况和紫外线指数。
移动设备比如手机和ipad可以通过GPS或者北斗卫星导航系统来定位得到经纬度坐标。那电脑用户怎么办呢?电脑既没有GPS,也不能像手机可以通过信号基站进行定位。
我们通过宽带访问互联网的时候,无论是独享的专线,还是公司或学校的局域网,宽带的运营商会为这个出口分配一个类似门牌号的地址,叫做公网ip地址。亚洲太平洋地区的ip地址,是由亚太互联网信心中心统一分配和管理的。为了方便管理,理论上,不同的ip段和不同地理区域示相对应的。所以我们可以用公网的ip地址来获得上网地点的经纬度(当然和GPS定位比起来误差很大)。
http://ip-api.com/这个网站,可以自动获得访问该网页的电脑的公网ip,并查询得出ip所属区域的经纬度。我们通过抓取这个网站的返回数据,来得到上网区域的大致经纬度地理信息,如图3。
由此,得出了我们的大致思路:
1.通过http://ip-api.com查询得到ip地址。并用bs4库加正则式,抓取返回的经纬度取值。
2.得到取值后,构建基于当前经纬度位置的https://weather.com/网站的实际访问网址。用xpath抓取得到的紫外线结果
3.加入根据紫外线强度值,给出紫外线防护建议的功能。最后打包生成(.exe)可执行文件。
源码及程序运行效果如下图所示:
百度网盘下载地址: https://pan.baidu.com/s/1cAnenak7qgCS61QFVXj0XA
提取码: 61aa
提示:打包的exe文件在32位的Windows系统下没法运行,64位系统可正常运行。某安全管家会报毒,请放心运行。