我的python之路二(爬豆瓣电影Top250)
终于把豆瓣Top250的数据收入囊中了,总结一下。
首先是跟着B站“老网红Alex讲Python”学的,是学到P19的结果。
视频讲解的非常简洁、到位。简洁是说他没有废话,不会说些有的没的,到位是他真的是有用的都说了,用不到的不说。
跟着坐下来,我也写完了我的第一个爬虫程序,成功的收集到了Top250资料。我一向是实用优先,对于用不到的知识我是一点也没有耐心学。所以接下来我就准备按个电影,看看我的电影资料库里有没有,看没看过,没看过的自然是要当一下了。
等我兴冲冲的打开CSV文件,马上就发现一个大问题:数目不够。不是250个吗,怎么只有230多个,这不可忍,马上查找原因。
对比了丢失的电影,发现是字段不全闹的。我关注的字段和老师有所不同,我是收集了“电影名”“年份”“国别”“类型”乃至“一句话评语”,不难看出,这些都是迅速了解这部电影是啥电影的一个切入口,哪年的电影、哪个国家的、什么类型的,一句话评语也可以大概了解电影的主题。

问题就出在“一句话评语”上,因为有很多电影,(第一个就是第131部《寄生虫》没有评语)没有这个东西。这就导致了,正则匹配时,由于找不到,就越过每部电影的边界去找下一部电影的评语,这样就把下一部电影的前面的字段都越过去了。
然后开始想办法,首先是又找了一些讲正则的资料,看看能不通过正则解决,研究了两天失败了。因为正则始终都是想办法匹配上,它没法实现“没有就忽略”这样的问题。
思来想去,还得通过程序控制来解决问题。因为前面的需要字段是每部电影都有的,就先修改程序,保留前面的,然后在后面单独加上处理评语的。
做法就是,先保存前面的字段,然后加入条件语句,扫描字串里(为了减少误判,我又加了一个内循环,按每部电影把每次收到的页面拆分成25个,因此只在一部电影的源代码里面搜索)是否有“一句话评语”的特征码,使用的是字符串的.find()方法。如果有,再进行一次正则,挑选出评语,没有就不再正则了。不管有没有,都写入一个换行符。这样就实现了有就写入,没有就跳过。
最后是成功了。

接下来要暂停学习爬虫了,准备学习调试。因为我这里调试了一下午,方法都是插入print打印变量,来观察是否实现,感觉太不专业了,得好好学习pycharm的调试功能。都是英文的有的难度,加油吧。