设为首页收藏本站

Crossin的编程教室

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

【Python 第43课】 查天气(1)

[复制链接]

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

41#
发表于 2018-8-10 13:03:26 |只看该作者
_test001 发表于 2018-8-10 10:21
查询结果出错了 好像是输入的“北京”编码有错?url识别不了?
但我不懂怎么改。。。

这个接口是直接用城市名
而且记得用utf8编码
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

4

积分

新手上路

Rank: 1

42#
发表于 2018-8-21 19:25:57 |只看该作者
crossin老师好,因为之前的接口都不能用了,所以我换成了这接口:
https://www.sojson.com/open/api/weather/json.shtml?city=北京
是以城市名为关键词的,但是这样又出现了一个新问题:
  1. #-*- encoding: utf-8 -*-

  2. import urllib.request
  3. import json

  4. cityname = input('你想查哪个城市的天气?\n')
  5. url = ('https://www.sojson.com/open/api/weather/json.shtml?city=%s' % cityname)
  6. content = urllib.request.urlopen(url).read()
  7. data = json.loads(content)
  8. print(data)
复制代码
这是我的代码,运行后我按提示输入北京后结果报错为:
UnicodeEncodeError: 'ascii' codec can't encode characters in position 38-39: ordinal not in range(128)

在网上查过一些解决办法,包括用import sys等方式,都不管用。。
请问老师这个问题怎么结局啊!谢谢了!
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

43#
发表于 2018-8-22 22:10:29 |只看该作者
phb625031983 发表于 2018-8-21 19:25
crossin老师好,因为之前的接口都不能用了,所以我换成了这接口:
https://www.sojson.com/open/api/weathe ...

要用 urllib.quote 处理下
看我公众号今天发的文章,以及里面附的代码
稍后我也会发上来
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

6

积分

新手上路

Rank: 1

44#
发表于 2018-9-22 22:53:46 |只看该作者
老师您好,我将文件下载之后看到的是
微信图片_20180922164938.png
请问这是正常显示吗?
然后我按照您的代码输入之后:
import urllib.request
import json
from city import city

cityname = input("which city do you want to search?\n")
citycode = city.get(cityname)
print(citycode)
if citycode:
        url = ("http://www.weather.com.cn/data/cityinfo/%s.html"%citycode)
        content = urllib.request.urlopen(url).read()
        print(content)
得到的结果是:
南京
None
请问这是怎么回事呢?
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

45#
发表于 2018-9-23 16:47:50 |只看该作者
Konmey 发表于 2018-9-22 22:53
老师您好,我将文件下载之后看到的是

请问这是正常显示吗?

编码不一致
跟你系统有关,要看你控制台输入是什么编码
然后全都设成一致的
# coding: gbk

gbk或者utf8都试一下,两个文件都要加。而且看你用什么编辑器,有的编辑器会自作主张帮你加编码。乱码的话,你要么设置下编码,要么重新创建文件复制进去。
公众号前几天“查天气”文章里应该有提到
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

22

积分

新手上路

Rank: 1

46#
发表于 2019-3-5 12:01:51 |只看该作者
老师,我试着读取百度首页,然后在写入文件时出现报错。

如果我不写入文件,把print出来的结果复制到baidu.html中,打开会是乱码,请问老师是怎么回事呢

微信图片_20190305120252.png (32.27 KB, 下载次数: 690)

微信图片_20190305120252.png

微信图片_20190305120219.png (30.41 KB, 下载次数: 685)

微信图片_20190305120219.png

回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

47#
发表于 2019-3-5 19:37:51 |只看该作者
jaxon 发表于 2019-3-5 12:01
老师,我试着读取百度首页,然后在写入文件时出现报错。

如果我不写入文件,把print出来的结果复制到baidu ...

写入时,open加上参数 encoding='utf8' 试下
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

22

积分

新手上路

Rank: 1

48#
发表于 2019-3-6 10:44:19 |只看该作者
crossin先生 发表于 2019-3-5 19:37
写入时,open加上参数 encoding='utf8' 试下

谢谢,果然可以了
回复

使用道具 举报

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

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

GMT+8, 2024-11-22 03:36 , Processed in 0.023845 second(s), 23 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部