Crossin的编程教室
标题:
46课查天气(4)报错解决过程
[打印本页]
作者:
TED
时间:
2017-11-30 17:48
标题:
46课查天气(4)报错解决过程
发个帖记录下自己完成解决报错的过程。。。
先总结:报错原因是有2个地区代码已经弃用,导致抓取过程无法返回正确格式。
解决方案是:定位弃用的地区代码,按正确格式给它标个'error'。
按着给定的代码试了一遍,最后报错如下:
IndexError: list index out of range
因为获取城市代码的过程是:先省份代码,再城市代码,再地区代码。
之前为了节省跑代码时间,我把省份代码自己设的['01','02'],最终获取地区列表是没有问题的。
所以问题可能出在某个省份 抓取地区代码时出错了。经过筛查,发现时省份代码'06'和'09'时都会报错。
2017-11-30 17:25 上传
下载附件
(73.96 KB)
定位'06''09'省份代码,获取其城市代码:发现两个少了一位的地区代码,且这2个地区的抓取结果都是<html>...</html>,导致最终地区代码结果的list不能存取相应的内容而报错。
2017-11-30 17:29 上传
下载附件
(7.48 KB)
2017-11-30 17:28 上传
下载附件
(10.25 KB)
2017-11-30 17:31 上传
下载附件
(38.32 KB)
2017-11-30 17:31 上传
下载附件
(39.82 KB)
开始以为是漏打了一位,应该分别是'060309'和'090209',试着查这两个代码,并没有结果,就当它们被弃用了吧。
2017-11-30 17:35 上传
下载附件
(44.24 KB)
为了完成地区代码列表,同时也包含这两个弃用代码,在将地区代码赋给列表时,检查下,我刚学python,就只针对刚两个地区结果,检查结果中是否包含'head',因为两个弃用代码抓取结果中不包含'|'而且结果是<html><head></head>...</head>。若包含'head',说明并未获取到正确的地区代码,给将它的地区代码覆写成 '城市代码|error' 的格式,如下图:
2017-11-30 17:46 上传
下载附件
(83.6 KB)
2017-11-30 17:46 上传
下载附件
(83.02 KB)
右侧即地区代码列表结果,因为抓取省份太多,时间比较长,但是没有报错了~,最终结果两个对应的地区代码均用error标明了。
作者:
crossin先生
时间:
2017-12-2 22:05
不错!
也可以直接用 try except 处理
作者:
TED
时间:
2017-12-4 10:10
crossin先生 发表于 2017-12-2 22:05
不错!
也可以直接用 try except 处理
2017-12-4 10:09 上传
下载附件
(22.28 KB)
先生,是这样吗?
作者:
crossin先生
时间:
2017-12-4 16:21
TED 发表于 2017-12-4 10:10
先生,是这样吗?
可以的
欢迎光临 Crossin的编程教室 (https://bbs.crossincode.com/)
Powered by Discuz! X2.5