Crossin的编程教室

标题: 46课查天气(4)报错解决过程 [打印本页]

作者: TED    时间: 2017-11-30 17:48
标题: 46课查天气(4)报错解决过程
发个帖记录下自己完成解决报错的过程。。。

先总结:报错原因是有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标明了。









作者: crossin先生    时间: 2017-12-2 22:05
不错!
也可以直接用 try except 处理
作者: TED    时间: 2017-12-4 10:10
crossin先生 发表于 2017-12-2 22:05
不错!
也可以直接用 try except 处理

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



作者: crossin先生    时间: 2017-12-4 16:21
TED 发表于 2017-12-4 10:10
先生,是这样吗?

可以的




欢迎光临 Crossin的编程教室 (https://bbs.crossincode.com/) Powered by Discuz! X2.5