因为____的缘故,在家甚是无聊,想着可能会做一个和数据分析相关的毕业设计,不如就提前准备一下数据。

眼光一扫,就是你了,豆瓣!说起来很有意思,我最开始写爬虫就是从豆瓣开始的,现在又回来了。

豆瓣,这世间所有的相逢都是久别重逢。

好了,不皮了,开始正题。豆瓣电影分类浏览页面

写爬虫之前,首先要明确一个问题你需要什么数据。先有目标,再有行动,这样思路也会清晰起来。我想要的数据就是页面中的电影的信息,所以先看数据是怎么加载的。F12,刷新,往下拉发现数据是一个GET请求得到的,问题简化了。我们模拟请求就可以获得数据了,nice!这样想是不是很清晰了。那我们怎么模拟请求呢,请求最重要的参数,其次就是一些请求头信息等。

经过多次刷新请求,知道每次请求都包含四个参数,分别是type_name、type、interval_id、action,每个参数都可以先猜再去验证。第一个就是类别名,比如上图类别就是剧情片,ID暂时不知道,第三个参数也可以大概的看出来就是最上面的按钮那里的好于100%-90%。所以现在要找的就是类别名和ID的一一对应,观察网页由上面更多类型里有所有的类别,可以查看网页源代码,可以看到ID和NAME都在链接中,取出来即可。

所以我们的目标很明确了,先找到ID和name,再根据这个去请求数据,还有一个问题,数据请求到了,下一页怎么办呢,一个类别要请求多少次呢,所以我们需要知道这个类别的电影总数。抬头一看,页面的好于100%-90%后面不就是吗?网页中展现的数据肯定是请求过来的,所以继续找找请求,找到一条返回类别总数的请求。

好了,到现在,你应该知道要怎么去写这个爬虫了。可以先把所有类别的id和name及这个类别的数量保存下来,然后再根据这些信息取构建请求,获取电影数据即可。Yes,就是这样的,一个小爬虫就这样被你想出来了。所以,开始编码。爬虫获取电影分类的ID和总数,并写入本地文件

接下来就是构建数据请求了,我们读取ID和NAME,将其加入到请求头中,获得我们想要的数据,将其保存再本地中。爬虫完成了它的使命。请求电影数据的代码部分

其实这个爬虫我写起来是很快的,因为豆瓣并没有很强的反爬策略,并没有登陆验证这些(也有可能是我比较温柔的爬)。只要你不是很过分的爬取,所以还是建议大家一定要放慢爬取速度!time.sleep多睡几秒,不要对网站的服务器照成影响。毕竟这些数据也都公开,作为自己用的话,也不需要大量,也不急。一定一定放慢速度!其次就是数据不要商用,仅作为个人学习之用是完全可以的。