设为首页收藏本站

Crossin的编程教室

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

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

  [复制链接]

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

11#
发表于 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
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

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

从网上搜索出来的,有人在文章里写过。我试图从官网上找正式接口文档,没找到
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

13#
发表于 2013-9-5 19:49:26 |显示全部楼层
Joyann 发表于 2013-9-4 20:22
那大部分的网址是不是我们都可以搜得到呢?也就是说我们是不是可以利用这种类型的代码抓到更多网站的东西 ...

一般来说,不同网站的代码结构会有不少差异。所以,尽管原理上是想通的,但对于抓取不同的网站,还是要先去分析目标网站的代码,再对症下药。

会利用搜索引擎解决问题是个需要掌握的技能
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

14#
发表于 2014-2-27 10:07:26 |显示全部楼层
learner 发表于 2014-2-26 21:28
请指教:改完之后,虽然print输出不再是乱码,但写入的city.py中依然是乱码,怎么办? ...

可能需要在写入文件的时候指定编码。
网上找了段代码供参考。windows的话可能要指定为cp936
  1. outFilePath = '.\\out\\out'
  2. outFile = open(outFilePath, 'w')
  3. s = u'我们'
  4. #指定写入文件时的编码
  5. outFile.write(s.encode('utf-8'))
复制代码
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

15#
发表于 2015-4-18 23:42:35 |显示全部楼层
lovepythoner 发表于 2015-4-18 06:43
前面的都看了非常好,阶梯设计的很好,循序渐进
这次的http://m.weather.com.cn/data5/city.xml连接失效请老 ...

新的访问接口可参考这两篇文章:
http://blog.csdn.net/hello_haozi/article/details/7564223
http://blog.csdn.net/fancylovejava/article/details/26102635
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

16#
发表于 2015-10-9 11:50:42 |显示全部楼层
陈小六 发表于 2015-10-8 15:52
基本就是按照教程上来的,加了几个暂停,输出一部分以后就报错了~
北京:101010100
海淀:101010200

数组越界了,没有[1]这个元素
你把content4也打印出来,看看是什么情况下出错了
然后对这种情况加上异常处理
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

17#
发表于 2015-11-9 21:01:56 |显示全部楼层
我是佩佩学姐 发表于 2015-11-8 19:35
基本上也是参照楼上陈小六的代码,我这边出现问题:
1、在content4 那行出现错误,IndexError: list index  ...

这个看起来是接口那里超时或者封掉了
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

18#
发表于 2015-11-12 13:04:55 |显示全部楼层
我是佩佩学姐 发表于 2015-11-11 21:27
可是每次都能查一会才会出现问题,IndexError: list index out of range 或者是502 bad gateway 、504 ga ...

增加异常处理,如果没成功,就sleep两秒钟重试
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

19#
发表于 2015-11-13 15:58:32 |显示全部楼层
我是佩佩学姐 发表于 2015-11-12 20:46
非常感谢Cossin先生指点。作为一个从未编程的人,调试完查天气的四节,相当吃力但是收获很多。(推荐用IDLE ...

python2里面的编码的确是个比较讨厌的东西,有机会我再好好整理一下。

粗略来说,idle提示cp936,是指你文件本身的编码,在win下默认是cp936,你也可以指定utf8
变量的编码,是变量存储的字符串的编码,这个牵涉到从网站上读取下来的时候,网页的编码是什么
而且因为不同系统的默认编码不一样,所以同一段代码未必每个平台都能正常运行
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

20#
发表于 2015-12-11 21:54:47 |显示全部楼层
book 发表于 2013-8-6 13:22
您好,这里是[0] 还是[1],我运行了好多次,抓的过程中,总是出错,每次都出在urllib2.urlopen().read(), ...

你把每一步的值都print出来看,看到底是哪里跟预想的不对了
有可能是网络问题,网络问题的话会有相应的报错的
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

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

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

GMT+8, 2024-5-2 12:59 , Processed in 0.020443 second(s), 22 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部