设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
查看: 4947|回复: 1
打印 上一主题 下一主题

43课查天气(1),尝试编写

[复制链接]

1

主题

0

好友

7

积分

新手上路

Rank: 1

跳转到指定楼层
楼主
发表于 2018-6-1 18:53:05 |只看该作者 |倒序浏览
本帖最后由 猪猪猪猪 于 2018-6-1 19:31 编辑

使用mac os vim,py3
在网上查询了半天,不太理解json的使用方法,索性撇开json,仅使用urllib,写出来之后,发现获取的北京地区的代号是错误的?但是其他的一些地区是可以查询的,比如武汉,南京等,不知道是什么原因,希望能有大神解惑!
citynumget.py
  1. import urllib.request
  2. response = urllib.request.urlopen('http://m.weather.com.cn/data3/city.xml')
  3. html = response.read().decode()
  4. datas1 = html.split(',')
  5. city = []
  6. for data in datas1:
  7.     data = data.split('|')
  8.     city.append(data[0])

  9. city1 = []
  10. for i in city:
  11.     response = urllib.request.urlopen('http://m.weather.com.cn/data3/city%s.xml'%(i))
  12.     html = response.read().decode()
  13.     datas2 = html.split(',')
  14.     for data in datas2:
  15.         data = data.split('|')
  16.         city1.append(data[0])

  17. city2 = []
  18. for i in city1:
  19.     response = urllib.request.urlopen('http://m.weather.com.cn/data3/city%s.xml'%(i))
  20.     html = response.read().decode()
  21.     city2.append(html)

  22. city3 = ','.join(city2)
  23. citynum = open('citynum.txt','w')
  24. citynum.write(city3)
  25. citynum.close()
复制代码
查询天气.py
  1. import urllib.request

  2. f = open('citynum.txt')
  3. city = f.read()
  4. f.close()
  5. city1 = city.split(',')
  6. citynum = {}
  7. for i in city1:
  8.     data = i.split('|')
  9.     citynum[data[1]] = data[0]

  10. print('请输入要查询天气的城市:')
  11. city = input()
  12. response = urllib.request.urlopen('http://www.weather.com.cn/data/cityinfo/101%s.html'%(citynum[city]))
  13. html = response.read().decode()

  14. html = html.split('{')#乱想的笨办法,将读取的文本写入字典
  15. html = html[-1].split('}')
  16. html = html[0]
  17. html = html.split('"')
  18. html = ''.join(html)
  19. html = html.split(',')
  20. weather = {}
  21. for i in html:
  22.     i = i.split(':')
  23.     weather[i[0]] = i[1]

  24. print('%s当前天气为%s,气温为%s~%s'%(weather['city'],weather['weather'],weather['temp1'],weather['temp2']))
复制代码
PS:第一次写这么长的代码,第一次发帖,好激动

——————————————————————
补充:看完之后的课程之后发现原来抓数据的时候漏掉了一步。。。但是这样都还能查就比较稀奇了
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

沙发
发表于 2018-6-2 00:17:41 |只看该作者
北京应该是对的吧,至少之前是可以的。
但是确实有部分城市的代号不对

另外就是天气数据其实是不更新了,查天气帖子开头有说
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-11-22 13:39 , Processed in 0.024266 second(s), 25 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部