Skip to content

利用爬虫绕过豆瓣限制抓取豆瓣电影信息

Published: at 14:43编辑该页面

前两天看到国内一个电影评论,大概意思是说近些年的烂片的一些规律,比如主演,导演,年份等等,闲来不是很忙,就写了段代码,按照年份把豆瓣的电影信息全部抓取下来,然后回头自己统计看看。

思路

爬虫程序写过好多,包括模拟提交,模拟登录抓取数据等等,所以核心代码就决定用 Java 的 HttpClient 来实现,本来想用 C#来的,但是想着上次用 WebClient 的坑到现在都没好好填上,还是算了,用 java 吧。

整体思路很简单,爬了列表后,组合列表 Url,然后爬所有电影的 ID,最后用豆瓣的 api 接口来获取每部电影的详细信息。

遇到的坑

中间测试时,遇到过两次问题,一次是被提示**“你访问豆瓣的方式有点像机器人程序”,一次是直接被“403 Forbidden”**,想来也是正常,服务器端肯定会有监测,大量的同一 IP 访问,肯定会被限制掉,试了下,增加 300ms 延时,更换 UserAgent,再试,解决了,本以为就这么 easy 的时候,发现个问题,隔了一段,还是会被 403,这就奇怪了。

经过几次测试,发现这个也很好解决,因为用 java 跑的时候,会发生 403,而在浏览器里面不会出现,这个时候很大程度上应该就是 cookie 了,对比了 header 头文件,发现在 cookie 里面有个奇怪的东东,如下:

bid=3OGLDtR3vdY;

果断的在被 403 以后,随机生成了 bid 的值,再次测试,OK!


先记录这么多,今天把所有电影的 ID 采完,然后明天采具体的内容吧,代码会在稍后提供,当然了,采集的数据肯定也提供喽,:)


上一篇
脑残的百度产品经理关于账号关联的死循环
下一篇
2016年终总结