在上一篇博文中,博主通过三个游戏程序讲述了python入门知识点击打开链接,现在再讲讲如何利用网页爬虫来写一个天气预报采集器,主要就是在中国天气网上爬取网页并过滤数据,得到需要的天气信息并打印出来。

其实要感谢我同学小党,他向我展示了他写的天气预报程序,可以输入城市后显示当前城市的天气和气温。然后我再完善了一下,不仅可以查全国城市的天气情况,也可以查一个省份或直辖市的总体天气情况,如输入“广东”则会列出广东省内所有地方的天气。

编程思想:在中国天气网给的链接中,http://www.weather.com.cn/data/cityinfo/%s.html 即可显示对应城市的天气,其中%s是城市编码,如北京的城市编码是101010100,则浏览器地址栏输入http://www.weather.com.cn/data/cityinfo/101010100.html 即可显示北京的天气信息(不信你试试- -;)。这样就可以生成城市和城市编码的字典,输入城市转化为编码,并嵌入到上述链接中,过滤得到相应的信息并打印出来。

那么,列出一个省份中所有城市的天气怎么实现呢?也很简单,我注意到一个省份的所有城镇的城市编码前5位都是一样的,如广东省的广州啊,深圳啊,东莞啊等等这些城市的编码前5位都是10128,因此可以生成省份和5位省份编码的字典,输入省份转化为编码,再加上剩余的4位并嵌入到上述链接中,过滤得到相应的信息并打印出来。

编程思想有了,敲代码就简单了,我自己实现的代码如下:

import urllib.request
import json
from city import city
from province import province

choice=input('查询省份或直辖市的天气请输入1,查询某个城市的天气请输入2\n')
if (choice=='1'):
provincename=input('你想查哪个省份或直辖市的天气?\n')
provincecode=province.get(provincename)
city={v:k for k,v in city.items()}
for citycode in range(int(provincecode)*10000+1,int(provincecode)*10000+2000):
if (city.get(str(citycode))):
url = ('http://www.weather.com.cn/data/cityinfo/%s.html'%str(citycode))
content = urllib.request.urlopen(url).read()
data = json.loads(content.decode())
result = data['weatherinfo']
str_temp = ('%s %s %s ~ %s') % (result['city'],result['weather'],result['temp1'],result['temp2'])
print (str_temp)
else:
continue
elif (choice=='2'):
cityname =input('你想查哪个城市的天气?\n')
citycode = city.get(cityname)
url = ('http://www.weather.com.cn/data/cityinfo/%s.html'%citycode)
content = urllib.request.urlopen(url).read()
data = json.loads(content.decode())
result = data['weatherinfo']
str_temp = ('%s %s %s ~ %s') % (result['city'],result['weather'],result['temp1'],result['temp2'])
print (str_temp)

else:
print('不合法的输入')
代码里city和provincce都是一个字典文件,字典的key是城市名称,value是城市编码。运行程序的效果如下:

更多相关文章

  1. Android---Volley请求天气接口JSON解析
  2. 【Android学习】案例学开发,天气记事本项目学习总结。RxJava+Retr
  3. listview 通过筛选全部城市显示出搜索的城市
  4. 默认墨迹天气 下雪效果
  5. Android中获取网络天气数据
  6. 昨天花了两个小时做了一个天气预报的Demo,希望对新人有所帮助。
  7. Android利用IP地址定位城市(全世界可用)

随机推荐

  1. 假如生活欺骗了你:可以用统计模型来做决策
  2. 疫情下普通人的生活写照
  3. 原理+代码|深入浅出Python随机森林预测实
  4. 动态图表交互揭秘:制作选择器的奥秘
  5. 探索另类圆环图的做法
  6. 图表操作的几个技巧
  7. 一图看懂《对比Excel,轻松学习Python数据
  8. 计算1-1/2+1/3-1/4.......-1/100的值
  9. 利用Excel学习Python:准备篇
  10. 动态图表揭秘:“动”的关键——取数