前言:
如今各位老铁们对“实时python爬虫”大致比较注意,同学们都想要了解一些“实时python爬虫”的相关知识。那么小编也在网上搜集了一些对于“实时python爬虫””的相关文章,希望我们能喜欢,兄弟们一起来了解一下吧!前言:
近期刚入门Python,所以一段时间内发布的Python文章多以激发学习兴趣为主,不会有很高深的算法等等;我也会定期分享一些有意思的Python程序
废话不多说,我们先来看一下最后的效果:
这里可能有人就要问了,为什么不写GUI,当然是因为懒啦
完成这个程序你需要:
Python的基础开发环境:这一点本文不赘述,网上的教程很多,本文的环境是python3.7;
pyinstall模块:使用pip下载,主要用来将你的python程序打包成Windows的可执行文件,这样在没有python环境的计算机上也可以使用;
requests模块:一般来说是自带的模块,没有的话就pip install;主要用于get对api的请求;
正文开始:
要想获取实时的天气数据,网上其实有很多的免费api可以使用,例如百度开放平台,和风,墨迹天气等等等;未来我会写一篇关于Python爬虫的文章,来教大家如何爬取网站上的实时天气;
这里因为写上一篇文章的时候已经注册了和风天气的开发者,本篇文章我们依然以和风的api为例:
如果不知道如何使用他的api,大家可以看一下我的上一篇文章,里面有详细介绍
(顺手点个关注呗≧◉◡◉≦)
首先我们导入requests模块,并get他的返回值打印出来:
import requests
place=input('请输入所在地点,可精确到区县:')
url=';+place+'&key=#' #key就隐藏了,到时候大家填上自己的key就行
res=requests.get(url).json()
print(res)
然后就可以看到如下内容:
我们可以看和风的开发文档,了解一下这些字段都是代表什么意思
所以我们就可以提取我们想要的字段了:
首先我们要考虑到的一个状况是:如果我们一不小心输入了错误的地理位置信息怎么办,例如不存在的地方,打错了字等等,那么我们这里就要用到一个status的返回值,我们叫做接口状态,只有当请求的数据正确时,它才会返回一个值叫做‘ok’,所以我们可以在程序的开始加一个判断条件:
while status!='ok':
place = input('输入地点无法找到,请重新输入:')
url = '; + place + '&key=#'
res = requests.get(url).json()
status = res['HeWeather6'][0]['status']
它的意思是,当状态返回不等于‘ok’时,开始循环,重新对place进行赋值,重新发送请求,重新定义接口状态;
到这个时候我们就可以来慢慢提取我们想要的元素了:
#地区相关
admin_area=res['HeWeather6'][0]['basic']['admin_area'] #获取到的省级
city=res['HeWeather6'][0]['basic']['parent_city'] #获取到的市级
stay=res['HeWeather6'][0]['basic']['location'] #获取到的区县级
update=res['HeWeather6'][0]['update']['loc'] #获取数据的当日时间,精确到分钟
tz=res['HeWeather6'][0]['basic']['tz'] #当地的时区
#温度相关
tmp_max=res['HeWeather6'][0]['daily_forecast'][0]['tmp_max'] #当天最高气温
tmp_max_2=res['HeWeather6'][0]['daily_forecast'][1]['tmp_max'] #第二天最高气温
tmp_max_3=res['HeWeather6'][0]['daily_forecast'][2]['tmp_max'] #第三天最高气温
tmp_min=res['HeWeather6'][0]['daily_forecast'][0]['tmp_min'] #当天最低气温
tmp_m_2=res['HeWeather6'][0]['daily_forecast'][1]['tmp_min'] #第二天最低气温
tmp_min_3=res['HeWeather6'][0]['daily_forecast'][2]['tmp_min'] #第三天最低气温
#天气状况描述
cond_txt_d=res['HeWeather6'][0]['daily_forecast'][0]['cond_txt_d'] #当天日间天气状况描述
#降水概率
pop=res['HeWeather6'][0]['daily_forecast'][0]['pop'] #当天降水概率
最后就是我们要开始输出我们想要的信息了:
print('最近一次获取数据时间为:'+update+'\n您所在的地区为:'+admin_area+'省'+city+'市'+stay+'区(县)')
print('今天最高气温为:'+tmp_max+'度'+'\n最低气温为:'+tmp_min+'度')
print('天气状况为:'+cond_txt_d+'\n降水概率为'+pop+'%')
最后一个重点:
就是在程序的结尾一定要加上:
input('输入任意键退出')
这其实是一个小知识点;如果你在ide环境里面运行当然没问题,但是当编译成可执行程序后,计算机执行完所有语句之后就会闪退,这时候我们加入一个输入语句,使计算机能够停下来等待我们的输入,不会造成闪退的现象;
在写好程序之后,我们需要进入到该程序的目录中去,按住shift键点鼠标右键,打开Windows shell,使用pyinstaller进行编译,
其语法格式为:-F表示文件 -i表示程序图标,着这个例子里面我用了一个名字叫做222的ico图标
(记住,程序图标一定要是ico格式的)
然后当前目录会新增几个目录,大家在dist这个目录下就可以得到exe文件
最后附上源码:
import requests
place=input('请输入所在地点,可精确到区县:')
url=';+place+'&key=04e8effac2cf46ad9cfddd3e3330ae32'
res=requests.get(url).json()
print(res)
status=res['HeWeather6'][0]['status']
while status!='ok':
place = input('输入地点无法找到,请重新输入:')
url = '; + place + '&key=04e8effac2cf46ad9cfddd3e3330ae32'
res = requests.get(url).json()
status = res['HeWeather6'][0]['status']
#地区相关
admin_area=res['HeWeather6'][0]['basic']['admin_area'] #获取到的省级
city=res['HeWeather6'][0]['basic']['parent_city'] #获取到的市级
stay=res['HeWeather6'][0]['basic']['location'] #获取到的区县级
update=res['HeWeather6'][0]['update']['loc'] #获取数据的当日时间,精确到分钟
tz=res['HeWeather6'][0]['basic']['tz'] #当地的时区
#温度相关
tmp_max=res['HeWeather6'][0]['daily_forecast'][0]['tmp_max'] #当天最高气温
tmp_max_2=res['HeWeather6'][0]['daily_forecast'][1]['tmp_max'] #第二天最高气温
tmp_max_3=res['HeWeather6'][0]['daily_forecast'][2]['tmp_max'] #第三天最高气温
tmp_min=res['HeWeather6'][0]['daily_forecast'][0]['tmp_min'] #当天最低气温
tmp_m_2=res['HeWeather6'][0]['daily_forecast'][1]['tmp_min'] #第二天最低气温
tmp_min_3=res['HeWeather6'][0]['daily_forecast'][2]['tmp_min'] #第三天最低气温
#天气状况描述
cond_txt_d=res['HeWeather6'][0]['daily_forecast'][0]['cond_txt_d'] #当天日间天气状况描述
pop=res['HeWeather6'][0]['daily_forecast'][0]['pop'] #当天降水概率
print('最近一次获取数据时间为:'+update+'\n您所在的地区为:'+admin_area+'省'+city+'市'+stay+'区(县)'+'\n时区是:东'+tz[1]+'区')
print('今天最高气温为:'+tmp_max+'度'+'\n最低气温为:'+tmp_min+'度')
print('天气状况为:'+cond_txt_d+'\n降水概率为'+pop+'%')
input('输入任意键退出')
标签: #实时python爬虫 #python获取计算机信息 #python获取天气