设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
楼主: crossin先生
打印 上一主题 下一主题

【Python 第44课】 查天气(2)

  [复制链接]

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

41#
发表于 2016-4-29 11:02:55 |显示全部楼层
issaclee 发表于 2016-4-29 09:36
老师及各位同学好:
我卡在这一课一天多了,win7环境,python2.7,两边都已设为cp936编码格式,但是content ...

发现 wthrcdn.etouch.cn 这个站的返回接口用了 gzip 压缩数据。所以你那个不是编码问题,而是数据被压缩了。
用此方法解压 gzip 数据:
  1. from StringIO import StringIO
  2. import gzip
  3. buf = StringIO(content)
  4. f = gzip.GzipFile(fileobj=buf)
  5. data = f.read()
复制代码
py3写法:
  1. import gzip
  2. data = gzip.decompress(content)
复制代码
详细的可去网上搜索“python 解压 gzip”
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

42#
发表于 2016-4-30 23:10:10 |显示全部楼层
issaclee 发表于 2016-4-29 11:39
老师,我访问http://www.weather.com.cn/data/cityinfo/%s.html这个依然不行
idle打印不出JSON数据,换了 ...

你上面那个网站,只要做一次gzip解压就可以,我试过。
下面这个,我看了下,他给的返回值默认是utf-8编码,所以你要手动做下解码处理
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

43#
发表于 2016-7-22 23:43:16 |显示全部楼层
magic233 发表于 2016-7-22 10:40
老师老师我沉船了
为了节省咱的空间我就不发图直接发代码和结果完全一样的代码这个是运行结果~~求老师教教~ ...

city.py 开头第一行也要加上 coding,因为代码里有中文。
如果你是windows,utf-8改成cp936
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

44#
发表于 2016-7-28 12:00:59 |显示全部楼层
zheyang 发表于 2016-7-27 17:48
请问crossin先生
是不是要得到天气的json数据必须在网站后面加上对应的城市代码?
而例如直接把天气接口

这个是看接口自己的设定,不同接口不一样。
你看查天气1开头那几篇文章链接里,有给过好几个接口,有不需要代码的。

比如:http://wthrcdn.etouch.cn/weather_mini?city=北京

#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

45#
发表于 2016-7-30 23:00:16 |显示全部楼层
zheyang 发表于 2016-7-28 12:19
======================= RESTART: D:/python code/aha.py =======================

>>>

这里有两个注意的地方,一个是这个接口接受中文,但尝试下来编码必须是utf8。
另一个,它的返回值会进行gzip压缩,你看“查天气1”帖子里有说明和解决方案
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

46#
发表于 2016-8-11 11:14:23 |显示全部楼层
刚进厂 发表于 2016-8-11 00:51
运行后出现这样是什么问题?
>>>

city.py 开头也要加上编码设置,如果是 windows,统一都用 gbk
# coding: gbk
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

47#
发表于 2016-8-15 14:46:15 |显示全部楼层
gongkegongke1 发表于 2016-8-15 14:42
好吧……自己解决了……要把urllib2.urlopen()和read()分开写……
不知道为什么……有同学能解答一下吗… ...

可能只是网络连接不好,没请求成功
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

48#
发表于 2016-8-19 11:04:32 |显示全部楼层
august 发表于 2016-8-18 21:17
抓取了天气,但发现天气状况和实际不符啊?啥原因?

那个接口停止更新了。
新接口看 查天气1 里开头给的链接
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

49#
发表于 2016-8-19 11:07:20 |显示全部楼层
Phoestia 发表于 2016-8-18 13:17
先生求助...
用utf-8显示正常,但返回None; 用cp936显示乱码,返回值也是None...

city.py 开头用了什么编码,两个文件都要和系统编码一致,windows是cp936或者gbk
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

50#
发表于 2016-8-22 09:25:28 |显示全部楼层
coffee_cat 发表于 2016-8-22 00:38
完全按照老师的方法,为什么会出现这个,望高手解惑.
Traceback (most recent call last):
  File "C:\Pyth ...

city.py 开头没加编码申明。回帖里有说过一样的情况,你找下
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

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

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

GMT+8, 2024-5-3 12:13 , Processed in 0.028332 second(s), 22 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部