第53天,我找到Python代码错误,终于成功爬取了豆瓣电影top250

上次说对照代码,死活找不到程序运行的错误,可谓百思不得其姐。

第53天,我找到Python代码错误,终于成功爬取了豆瓣电影top250

老办法,问度娘。

关于错误“IndexError: list index out of range”,一般是两种可能:

第一种是 index 超出范围;

第二种是 list 是一个空的,没有一个元素。

很明显,我这错误属于第一种。

但是,明明我指定的是 (0,250)的范围,为毛会到26就报错了呢?

抱着试试看的办法,使用下 debug按钮,没想到,一看还真发现了一片新天地。

断点设在报错的129行,结果按下 debug,datalist显示的网址是1828115。

第53天,我找到Python代码错误,终于成功爬取了豆瓣电影top250

凭借我鹰的眼睛,狼的耳朵,豹的速度,熊的力量,我果断意识到,这个网址有问题。

打开这个网址,我就惊呆了。

第53天,我找到Python代码错误,终于成功爬取了豆瓣电影top250

色戒?竟然是色戒!

没错,每个看过此片(尤其是未删减版的,啧啧

)的男人都承认,这片确实是经典。

但是,但是,它不该是遍历出的第一个结果啊。

再看它的排名:226。

答案一下子就清楚了,怪不得到26就报错了,因为再后面就超过250部电影,就没了啊。

数据溢出,自然就报错了。

试着把 for in 的范围改一下,果然,程序运行就没有问题了。

第53天,我找到Python代码错误,终于成功爬取了豆瓣电影top250

所以,问题的根源就是,程序中的哪个位置,网址变成了《色戒》的?

问题一定是出在 datalist 上准没跑了,盯着这条线索就好了。

这家伙第一次出现就是在 main 函数中,要说这块都是常规操作,应该没啥问题,不过小心点没坏处。

结果,没想到问题还真就出在这块。

第53天,我找到Python代码错误,终于成功爬取了豆瓣电影top250

baseurl 定义时,网址还是好好的,结果到了datalist 时候,网址就变成了 1828115 ,嗯,也就是《色戒》的网址了。

这是什么鬼?

难道我这程序能他么自动识别我想看啥,然后直接变更不成?!

细思极恐。

第53天,我找到Python代码错误,终于成功爬取了豆瓣电影top250

追根溯源,看来就是 getData 函数中出现的问题。

第53天,我找到Python代码错误,终于成功爬取了豆瓣电影top250

把断点设在解析数据的 for 循环位置,debug后,可以看到上面的 url 变成了 start=225。

第53天,我找到Python代码错误,终于成功爬取了豆瓣电影top250

嗯?这就不对了,合着下面的程序啥也没干呢,您自己循环了225次,玩的挺嗨啊!

你们哥俩各自循环各自的,谁也不管谁,这就太不仗义了吧。

把下面的内容整体缩进。

再运行下程序。

哈哈哈哈哈哈哈哈!

成功搞定!

第53天,我找到Python代码错误,终于成功爬取了豆瓣电影top250

再打开存储文件的 豆瓣电影Top250.xls。

整齐的排列、详尽的数据,太令人感动了,当浮一大白!

第53天,我找到Python代码错误,终于成功爬取了豆瓣电影top250

如果昨天直接跟老师一起就把结果做出来,可能还没有这么激动。

经过自己的一番查找,不仅对代码的理解加深了,更对结果有种难以置信的不真实感。

虽然学习之初确实是奔着爬虫来的,但是真能把结果弄出来,还是有种“有生之年”之感。

最后,特此感谢大佬@DAMON58031404、@hey你的张益达 对我的指点。

作者简介:冯十一,40岁仍然坚持学习的哏儿都老男人。多平台签约作者,日更写作践行者,每周阅读一本书。欢迎关注@天津冯十一


分享到:


相關文章: