python+正则表达式实现爬取猫眼电影排行top100
需求:
爬取猫眼电影排名前一百的电影基本信息,图片链接,主演等
编辑器:
pycharm
代码演示:
1.首先import 我们所需要的库文件
12.定义一个获取page,也就是HTML文本的方法:
在这里,我们为了代码的见解复用性,定义一个函数来获取指定url,默认headers=None的函数,并进行了异常的处理,需要用到requests.exceptions 里面的RequestException,为什么使用它呢,因为python是支持继承的,而RequestException恰恰是所有Error或者是exception的父类,所以为了可以简便操作,直接引入父类。由状态码是否等于200来进行判断请求是否成功!
23.定义一个parse HTML的函数
在这里我们使用的是正则表达式,虽然有点繁琐,但是可以让初学者对正则表达式有一个很好的理解!
调用它的findall方法即可进行匹配。注意:这里有一个关键字,‘yield’,可能好多人都是第一次看到这个关键字,他其实类似于return,还有你要记住,带有该关键字的函数已经不再是简单意义上面的函数了,他已经是一个迭代器了!!在这里,为了是我们的数据更加的规整,我们使用yield关键字生成字典,并返回每一次for循环遍历的结果。在findall返回的结果中(是一个列表)我们使用了strip()方法进行去除换行符,使用了字符串的切片去除我们不需要的值,这样方便我们进行本地存储!
34.定义一个主方法
模块化很重要,所以在这里我定义了一个主方法
offset参数其实是一个我们为了爬取top100的参数,由于top100处于不同的分页之中,如果你细心的话,每一个分页其实就是改变这个参数。这里需要读者去猫眼官网排行页面自行查看。注意:在第三部分说了,带有yield的函数已经不再是一个简单的函数了,他是一个迭代器,你可以理解为一个对象,所以可以使用for遍历,wite_to_file()是一个把内容写入本地txt文件的方法,将在下面给出。
45.定义一个保存文件的方法:
有一个content内容参数,代表我们写入的内容,指定encoding='utf-8',ensure_ascii=False,可以解决中文被写成二进制的问题,注意要关闭f
5运行结果:
程序入口:
for循环是为了抓取top100,也就是10页的内容,读者可以去猫眼官网查看offset参数观察规律。
控制台输出:
6保存的txt文件:
7总结
这里我就没有分享源码了,实践最好,希望对大家有所帮助,谢谢,喜欢的可以点赞哦!!!