昨天我们已经实现了如何抓取豆瓣上的热门电影信息,虽然不多,只有几百,但是足够我们进行分析了。
今天我们来讲一下如何获取某一部电影的所有短评论信息,并保存到mongodb中。
反爬虫
豆瓣设置的反爬虫机制是比较简单的,我们可以通过selenium模拟浏览器登陆这种终极办法来绕过,但是更加有效率的方法是设置请求头信息的cookie,是豆瓣认为在访问的就是一个用户,而不是机器。
【插入图片,我的cookie】
我们首先要登陆自己的豆瓣账户,随便点击一个评论页面,在请求信息里面,找到cookie,保存下来。
分析评论页
我们先看一下评论页面的url特点,或者说请求网址的构成。
https://movie.douban.com/subject/26378579/comments?start=20&limit=20&sort=new_score&status=P&percent_type=
一看上面的url,我们就能分析出来这又是一个参数传递的url,前面的地址是这部电影的url,我们通过昨天的学习,应该能够得到并且已经保存在数据库中了。
【插入图片,评论url参数】
改变start的值,就可以得到很多个页面了。
值得注意的是,评论并不是通过ajax加载的,而是在html的响应中存在的,我们解析url的响应内容,就可以获取评论。我还是喜欢用最方便的PyQuery来解析源代码。
然后我们分析一下评论的源代码构成:
【插入图片,所有评论的源码】