龙空技术网

Python | 50行代码爬取猫眼 top100

Python程序员不动否 263

前言:

现时兄弟们对“python爬取猫眼电影”大约比较关心,朋友们都需要了解一些“python爬取猫眼电影”的相关知识。那么小编也在网摘上搜集了一些有关“python爬取猫眼电影””的相关知识,希望大家能喜欢,看官们一起来了解一下吧!

前言:最近真的是忙到 x 生活都没时间(说的好像不忙就有一样),手动滑稽。话不多说了,那今天给你们带来的就是一个简单的静态网页的爬取:requests + 正则爬取猫眼 top100

环境

wi10 + python3.6

思路

这个简单的爬虫有两个主要的思路。 1、打开猫眼 top100 4,确定要爬取得内容。 那这里打开猫眼 top100 之后是这样的:

上图,我以霸王别姬为例讲解,我们要爬取的目标内容有 电影排名,电影海报链接,电影名称,主演,上映时间以及评分等 6 个主要内容。

2、审查元素,思考如何使用正则匹配你需要的内容

霸王别姬

审查元素

可以看到上图,分别标出了我们要爬取得内容。其中每一个电影使用了一个 dd 标签包裹,我们要爬取的内容就在这个标签下,如排名被包裹在 i 标签里面,海报链接被包裹在 a 标签内,电影名称被包裹在 篇 p 标签下的 a 标签内,主演、上映时间以及评分都被包裹在 p 标签内, 其中评分被分开成两个 a 标签装载。

代码

获取 html

如何用代码打开指定的网页并获取其 html 代码? 这里用到了 Python 的网络请求库 requests。还没安装的打开你的 cmd 窗口,执行命令:pip install requests(仅限 windows 平台) 之后会收到安装成功的提示。那安装完之后就可以开始写代码了。网络请求代码如下:

这段代码也没啥好讲的,首先就是导入 requests 库,使用它的 get 方法传入 url 和 header(特别重要)返回的是字符串类型的 html 代码 以及请求状态码。判断返回的状态码是否等于 200 ,等于 200 则返回 text 即 网页html代码。返回的代码和我们审查元素时看到的是一样的(仅限此网页),这里不多赘述。

解析 html

上述代码出现了很多 .*?这个符号的意思就是贪婪模式,原则是匹配尽可能多的字符,如果看不明白上面那个正则匹配的话,建议去 菜鸟教程学习一下正则表达式。 运行上述代码解析出来的 html 就是这样的:列表形式返回匹配项

格式化匹配项

如上 yield 的作用就是生成一个迭代器。

写入文件

这里用到了 json 库。首先就是指定文件(默认存储在当前路径),之后就是开启一个文件流并指定编码格式,把 content 写入文件中。

实现翻页

上述代码只是爬取首页的 10 部电影而已,要爬取剩下的 90 部电影,我们需要在浏览器点击下页时,观察地址栏的变化。这里的话,点击下页其实就是一个 offset 的改变。原来是地址是:

点击第二页是:

后面页数以此类推。 思考后可得出下面代码:

这时爬取得就是 猫眼 TOP100 的电影,并保存在 top100.txt 文件中:

猫眼 Top100

至此,requests + 正则爬取猫眼电影 Top100 项目已完成。一个用了 50 行代码左右。完整代码如下:

当然,这只是爬取静态网页而已,代码非常的简单,但是也建议初学者自己动手实践一下,虽然很简单,但千万不能有所见即所得的想法。刚开始我也觉得很简单。但是有时你可能会遇到意想不到的坑,比如我在写这篇代码时,就忽略了 yield 的用法,踩了一个很大的坑,用了我一小时才填完。但是也没关系,所谓大神也是踩坑--填坑 不断循环这个过程锻炼而来的。

最后,小编想说:我是一名python开发工程师,整理了一套最新的python系统学习教程,想要这些资

料的可以关注私信小编“01”即可(免费分享哦)希望能对你有所帮助

标签: #python爬取猫眼电影