设为首页收藏本站

Crossin的编程教室

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

46课查天气(4)报错解决过程

[复制链接]

6

主题

2

好友

654

积分

实习版主

Rank: 7Rank: 7Rank: 7

跳转到指定楼层
楼主
发表于 2017-11-30 17:48:38 |只看该作者 |倒序浏览
发个帖记录下自己完成解决报错的过程。。。

先总结:报错原因是有2个地区代码已经弃用,导致抓取过程无法返回正确格式。
解决方案是:定位弃用的地区代码,按正确格式给它标个'error'。

按着给定的代码试了一遍,最后报错如下:
IndexError: list index out of range

因为获取城市代码的过程是:先省份代码,再城市代码,再地区代码。
之前为了节省跑代码时间,我把省份代码自己设的['01','02'],最终获取地区列表是没有问题的。
所以问题可能出在某个省份 抓取地区代码时出错了。经过筛查,发现时省份代码'06'和'09'时都会报错。
总错误.PNG

定位'06''09'省份代码,获取其城市代码:发现两个少了一位的地区代码,且这2个地区的抓取结果都是<html>...</html>,导致最终地区代码结果的list不能存取相应的内容而报错。

错误2.PNG 错误1.PNG
错误2.1.PNG 错误1.2.PNG

开始以为是漏打了一位,应该分别是'060309'和'090209',试着查这两个代码,并没有结果,就当它们被弃用了吧。
原因.PNG

为了完成地区代码列表,同时也包含这两个弃用代码,在将地区代码赋给列表时,检查下,我刚学python,就只针对刚两个地区结果,检查结果中是否包含'head',因为两个弃用代码抓取结果中不包含'|'而且结果是<html><head></head>...</head>。若包含'head',说明并未获取到正确的地区代码,给将它的地区代码覆写成 '城市代码|error' 的格式,如下图:
解决2.PNG          解决1.PNG
右侧即地区代码列表结果,因为抓取省份太多,时间比较长,但是没有报错了~,最终结果两个对应的地区代码均用error标明了。








回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

沙发
发表于 2017-12-2 22:05:06 |只看该作者
不错!
也可以直接用 try except 处理
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

6

主题

2

好友

654

积分

实习版主

Rank: 7Rank: 7Rank: 7

板凳
发表于 2017-12-4 10:10:20 |只看该作者
crossin先生 发表于 2017-12-2 22:05
不错!
也可以直接用 try except 处理

提问.PNG
先生,是这样吗?


回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

地板
发表于 2017-12-4 16:21:07 |只看该作者
TED 发表于 2017-12-4 10:10
先生,是这样吗?

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

使用道具 举报

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

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

GMT+8, 2024-6-16 19:51 , Processed in 0.025774 second(s), 25 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部