请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
楼主: crossin先生

【Python 第46课】 查天气(4)

  [复制链接]

0

主题

1

好友

132

积分

注册会员

Rank: 2

发表于 2013-9-2 20:24:36 |显示全部楼层
crossin先生 发表于 2013-9-2 18:51
很可能是,查询多了,对方服务器有时候没有回复成功。
你把contect4打出来看看,错的时候是什么数据 ...

试了5次,有3次是放回一张html文件的源代码,应该是长404页面,

<div class="main">
  <h1>很抱歉,您要访问的页面不存在。</h1>
    <p>请直接点击下面的连接进入中国天气网首页:<a href="http://www.weather.com.cn/">www.weather.com.cn</a></p>
<div class="ewm">
        <h3><a href="http://3g.weather.com.cn/">中国天气网客户端</a></h3>
        <dl>
          <dt><a href="http://3g.weather.com.cn/"><img src="/poster/chart.png"></a></dt>
          <dd><a href="http://3g.weather.com.cn/">点击或扫描下载</a></dd>
        </dl>

      </div>
</div>


有2次是返回下面的报错:

Traceback (most recent call last):
  File "/Users/aresli/Sites/Dropbox/file/python/lesson46.py", line 33, in <module>
    content4 = urllib2.urlopen(url4).read()
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 126, in urlopen
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 400, in open
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 513, in http_response
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 438, in error
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 372, in _call_chain
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 521, in http_error_default
urllib2.HTTPError: HTTP Error 404: Not Found


是不是网络问题或者是中国天气网的数据问题?
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2013-9-2 20:37:04 |显示全部楼层
aresli 发表于 2013-9-2 20:24
试了5次,有3次是放回一张html文件的源代码,应该是长404页面,

最近经常这样,请求多了它那里就拿不到数据。在循环里面sleep一下,可能会好些。
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

1

好友

132

积分

注册会员

Rank: 2

发表于 2013-9-2 22:46:38 |显示全部楼层
crossin先生 发表于 2013-9-2 20:37
最近经常这样,请求多了它那里就拿不到数据。在循环里面sleep一下,可能会好些。 ...

在第二层和第三层循环中分别加了 time.sleep(0.1),结果还是一样。

不纠结了,掌握程序的思路就可以了。
回复

使用道具 举报

1

主题

1

好友

40

积分

新手上路

Rank: 1

发表于 2013-9-3 15:51:08 |显示全部楼层
我输出的content1是乱码的,为什么呢?
回复

使用道具 举报

1

主题

1

好友

40

积分

新手上路

Rank: 1

发表于 2013-9-3 16:35:03 |显示全部楼层
hellopython 发表于 2013-7-27 21:05
提点拙建
1.最好再加上异常处理
2.最好加上超时

具体怎么写延迟呢?
回复

使用道具 举报

1

主题

1

好友

40

积分

新手上路

Rank: 1

发表于 2013-9-3 17:29:28 |显示全部楼层
本帖最后由 林夕_信仰 于 2013-9-3 17:38 编辑

先生,我抓取省份的列表之后,输出content1,结果是乱码的(我在文件头已经加了#encoding:utf-8 ),怎么办呢?@crossin先生
#encoding:utf-8
import urllib2


url = 'http://m.weather.com.cn/data5/city.xml'
f = urllib2.urlopen(url)
content = f.read()
f.close()

print content


省份.PNG
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2013-9-3 20:26:38 |显示全部楼层
林夕_信仰 发表于 2013-9-3 17:29
先生,我抓取省份的列表之后,输出content1,结果是乱码的(我在文件头已经加了#encoding:utf-8 ),怎么 ...

你这问题好像和楼上某个问题是一样的,你看一下上面的评论。
  1. print content.decode('utf-8')
复制代码
用这个方法试试看。
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2013-9-3 20:28:35 |显示全部楼层
林夕_信仰 发表于 2013-9-3 16:35
具体怎么写延迟呢?
  1. import time

  2. time.sleep(0.5)
复制代码
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

1

主题

1

好友

40

积分

新手上路

Rank: 1

发表于 2013-9-4 08:56:54 |显示全部楼层
crossin先生 发表于 2013-9-3 20:28

thanks~
回复

使用道具 举报

0

主题

0

好友

38

积分

新手上路

Rank: 1

发表于 2013-9-4 11:53:23 |显示全部楼层
想问一下,我们抓天气预报的网址是怎么来的呢??
回复

使用道具 举报

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

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

GMT+8, 2024-4-18 22:35 , Processed in 0.019703 second(s), 23 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部