设为首页收藏本站

Crossin的编程教室

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

windows下 编码问题

[复制链接]

3

主题

0

好友

243

积分

中级会员

Rank: 3Rank: 3

跳转到指定楼层
楼主
发表于 2013-8-20 12:18:42 |只看该作者 |倒序浏览
windows下 编码问题 2013-08-20_121441.png    
用的#-*-coding: utf-8 -*-
打印正确   但是文件保存错误了
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

沙发
发表于 2013-8-20 14:40:41 |只看该作者
从这点信息我也看不出什么问题

可以把完整代码、错误提示放上来瞅瞅?
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

3

主题

0

好友

243

积分

中级会员

Rank: 3Rank: 3

板凳
发表于 2013-8-21 11:36:06 |只看该作者
  1. # -*- coding: utf-8 -*-
  2. import urllib2

  3. url1 = 'http://m.weather.com.cn/data5/city.xml'
  4. content1 = urllib2.urlopen(url1).read()
  5. provinces = content1.split(',')
  6. result = 'city = {\n'
  7. url = 'http://m.weather.com.cn/data3/city%s.xml'
  8. for p in provinces:
  9.     p_code = p.split('|')[0]
  10.     url2 = url % p_code
  11.     content2 = urllib2.urlopen(url2).read()
  12.     cities = content2.split(',')
  13.     for c in cities:
  14.         c_code = c.split('|')[0]
  15.         url3 = url % c_code
  16.         content3 = urllib2.urlopen(url3).read()
  17.         districts = content3.split(',')
  18.         for d in districts:
  19.             d_pair = d.split('|')
  20.             d_code = d_pair[0]
  21.             name = d_pair[1]
  22.             url4 = url % d_code
  23.             content4 = urllib2.urlopen(url4).read()
  24.             code = content4.split('|')[1]
  25.             line = "    '%s': '%s',\n" % (name, code)
  26.             result += line
  27.             print  name + ':' + code
  28. result += '}'
  29. f = file('./mycity.py', 'w')
  30. f.write(result)
  31. f.close()
复制代码
  1. urllib2.URLError: <urlopen error [Errno 10061] >
  2. File "g:\mypython\weather\getxml.py", line 24, in <module>
  3.   content4 = urllib2.urlopen(url4).read()
  4. File "G:\Python27\Lib\urllib2.py", line 126, in urlopen
  5.   return _opener.open(url, data, timeout)
  6. File "G:\Python27\Lib\urllib2.py", line 394, in open
  7.   response = self._open(req, data)
  8. File "G:\Python27\Lib\urllib2.py", line 412, in _open
  9.   '_open', req)
  10. File "G:\Python27\Lib\urllib2.py", line 372, in _call_chain
  11.   result = func(*args)
  12. File "G:\Python27\Lib\urllib2.py", line 1199, in http_open
  13.   return self.do_open(httplib.HTTPConnection, req)
  14. File "G:\Python27\Lib\urllib2.py", line 1174, in do_open
  15.   raise URLError(err)
复制代码
输出的是乱码(需要再另外编成gbk才行。):
  1. 鍖椾含:101010100
  2. 娴锋穩:101010200
  3. 鏈濋槼:101010300
  4. 椤轰箟:101010400
复制代码
谢谢解答一下
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

地板
发表于 2013-8-21 16:42:14 |只看该作者
jpjlqone 发表于 2013-8-21 11:36
输出的是乱码(需要再另外编成gbk才行。):谢谢解答一下

参见 http://www.crossin.me/forum.php? ... d=799&fromuid=3
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

3

主题

0

好友

243

积分

中级会员

Rank: 3Rank: 3

5#
发表于 2013-8-21 19:31:15 |只看该作者
crossin先生 发表于 2013-8-21 16:42
参见 http://www.crossin.me/forum.php?mod=redirect&goto=findpost&ptid=42&pid=799&fromuid=3

编码这个好解决 ,但是程序跑到一个就停止报错了 code = content4.split('|')[1] 这里报错:
  1. IndexError: list index out of range
  2. File "g:\mypython\weather\getxml.py", line 26, in <module>
  3.   code = content4.split('|')[1]
复制代码
提示超出了列表范围,但[1]是编码,应该每超出吧。而且每次扫描停止位置都不同,网络问题?
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

6#
发表于 2013-8-21 20:07:43 |只看该作者
jpjlqone 发表于 2013-8-21 19:31
编码这个好解决 ,但是程序跑到一个就停止报错了 code = content4.split('|')[1] 这里报错:提示超出了列 ...

这你要把content4输出出来看看
或者你把这行代码分两行,先把content4.split('|')输出,看看问题到底在哪里
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

3

主题

0

好友

243

积分

中级会员

Rank: 3Rank: 3

7#
发表于 2013-8-21 22:36:04 |只看该作者
crossin先生 发表于 2013-8-21 20:07
这你要把content4输出出来看看
或者你把这行代码分两行,先把content4.split('|')输出,看看问题到底在哪 ...
  1. ['090202', '101090202']
  2. ['090203', '101090203']
  3. ['090204', '101090204']
  4. ['090205', '101090205']
  5. ['090206', '101090206']
  6. ['090207', '101090207']
  7. ['090209', '101090209']
  8. ['<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\n<html xmlns="http://www.w3.org/1999/xhtml"><head>\n<!--\n<meta http-equiv=\'refresh\' content=\'5; url=http://www.weather.com.cn\'>\n-->\n<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">\n<title>\xe9\xa1\xb5\xe9\x9d\xa2\xe6\xb2\xa1\xe6\x9c\x89\xe6\x89\xbe\xe5\x88\xb0-\xe4\xb8\xad\xe5\x9b\xbd\xe5\xa4\xa9\xe6\xb0\x94\xe7\xbd\x91</title>\n<style>\n\n*\n   {\n\tmargin: 0;\n\tpadding: 0;\n\tlist-style:none;\n\tfont-weight:normal;\n    }\na img\n    {\n\tborder:1px solid #dcdddd;\n\t}\nbody \n    {\n\tfont-family: Arial, Verdana, Helvetica, sans-serif;\n\tbackground:#fff;\n\tcolor:#000;\n\tfont-size:12px;\nfont-style:normal;\n\t}\ni \n    {\nfont-style:normal;\n}\na \n    {\n\tcolor:#36B;\n\ttext-decoration:none;\n         font-size:12px;\n         outline: medium none;\n\t}\na:hover\n    {\n\tcolor:#F60;\n\ttext-decoration:underline;\n\t}\na:link {\n font-size: 20px;\n line-height: 26px;\nfont-weight: bold;\n color: #3366bb;\n text-decoration: underline;\n}\n.main\n{\n\twidth:960px;\n\theight:300px;\n\tborder-bottom:4px solid #36b;\n\tmargin:0 auto;\n\tmargin-top:20px;}\n.main h1\n{\n\tbackground:#36b;\n\theight:24px;\n\tfont-size:17px;\n\tfont-weight:bold;\n\ttext-align:center;\n\tcolor:#fff;\n\tline-height:24px;}\n.main p\n{\n\tmargin-top:20px;\nmargin-bottom:20px;\n\n\tcolor:#333;\n\tfont-size:15px;\n\ttext-align:center;}\n.main p a\n{\n\tfont-weight:bold;}\n.ewm{\n\twidth:158px;\n\theight:auto;\n          padding-bottom:5px;\n\tmargin:0 auto;\n\tbackground-color:#f2efef;\n\tmargin-top:5px;\n\n}\n.ewm h3 a{\n\tfont-size:13px;\n\tcolor:#000;\ntext-decoration: none;\nfont-weight:normal;\n}\n.ewm h3{\n\ttext-align:center;\n\theight:25px;\n\tline-height:25px;\n}\n.ewm dl{\n\twidth:158px;\n\theight:auto;\n\ttext-align:center;}\n.ewm dl dt{\n\twidth:158px;\ntext-align:center;\n\theight:145px;\n\tmargin:0 auto;}\n.ewm dl dt img{\n\twidth:145px;\n\theight:145px;\n}\n.ewm dl dd{\n\theight:20px;\n\tline-height:20px;\n\twidth:150px;\n}\n.ewm dl dd a{\n\tfont-size:13px;\n\tcolor:##3366bb;\n}\n</style>\n</head>\n\n<body>\n<div class="main">\n\t<h1>\xe5\xbe\x88\xe6\x8a\xb1\xe6\xad\x89\xef\xbc\x8c\xe6\x82\xa8\xe8\xa6\x81\xe8\xae\xbf\xe9\x97\xae\xe7\x9a\x84\xe9\xa1\xb5\xe9\x9d\xa2\xe4\xb8\x8d\xe5\xad\x98\xe5\x9c\xa8\xe3\x80\x82</h1>\n\t<p>\xe8\xaf\xb7\xe7\x9b\xb4\xe6\x8e\xa5\xe7\x82\xb9\xe5\x87\xbb\xe4\xb8\x8b\xe9\x9d\xa2\xe7\x9a\x84\xe8\xbf\x9e\xe6\x8e\xa5\xe8\xbf\x9b\xe5\x85\xa5\xe4\xb8\xad\xe5\x9b\xbd\xe5\xa4\xa9\xe6\xb0\x94\xe7\xbd\x91\xe9\xa6\x96\xe9\xa1\xb5\xef\xbc\x9a<a href="http://www.weather.com.cn/">www.weather.com.cn</a></p>\n<div class="ewm">\n        <h3><a href="http://3g.weather.com.cn/">\xe4\xb8\xad\xe5\x9b\xbd\xe5\xa4\xa9\xe6\xb0\x94\xe7\xbd\x91\xe5\xae\xa2\xe6\x88\xb7\xe7\xab\xaf</a></h3>\n        <dl>\n          <dt><a href="http://3g.weather.com.cn/"><img src="/poster/chart.png"></a></dt>\n          <dd><a href="http://3g.weather.com.cn/">\xe7\x82\xb9\xe5\x87\xbb\xe6\x88\x96\xe6\x89\xab\xe6\x8f\x8f\xe4\xb8\x8b\xe8\xbd\xbd</a></dd>\n        </dl>\n        \n      </div>\n</div>\n<script type="text/javascript" src="weather_error_404_files/a1.js">\n</script>\n<script type="text/javascript">\nvar vjAcc="860010-2099030100";\nvar wrUrl="http://c.wrating.com/";\nvjTrack("");\n</script><div style="display:none"><img src="weather_error_404_files/a.gif" id="wrTagImage" height="1" width="1"></div>\n<noscript><img src="http://c.wrating.com/a.gif?a=&c=860010-2099030100" width="1" height="1"/></noscript>\n\n\n</body></html>\n']
  9. ['090211', '101090211']
  10. ['090212', '101090212']
复制代码
print  content4.split('|') 跑出xhtml了,xml文件不规则的原因吧
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

8#
发表于 2013-8-22 00:06:45 |只看该作者
这段html的标题是“页面没有找到-中国天气网”
所以,如果url没错的话,应该是当时网络问题或者服务器问题导致没有找到那个页面
应该不会每次都有这个错误把?

如果每次都是这里问题,把url4输出看看是不是正确
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

3

主题

0

好友

243

积分

中级会员

Rank: 3Rank: 3

9#
发表于 2013-8-22 09:45:10 |只看该作者
crossin先生 发表于 2013-8-22 00:06
这段html的标题是“页面没有找到-中国天气网”
所以,如果url没错的话,应该是当时网络问题或者服务器问题 ...

每次停止响应的位置都不同,应该是服务器问题了,不纠结这问题了,本质东西搞懂了就好,谢谢了。
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

10#
发表于 2013-8-22 10:47:18 |只看该作者
jpjlqone 发表于 2013-8-22 09:45
每次停止响应的位置都不同,应该是服务器问题了,不纠结这问题了,本质东西搞懂了就好,谢谢了。 ...

如果是这样的话,很可能是请求过快造成的,你可以在每次请求之后sleep一小段时间
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

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

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

GMT+8, 2024-11-25 06:20 , Processed in 0.029159 second(s), 24 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部