两种方式爬取拉勾网职位信息的总结

大学毕业论文写了一个关于职位信息的爬虫,爬取了包括拉钩智联在内的许多网站,上个月拿出老代码再爬拉钩发现失效了,经过两个星期(每天大概2-3个小时)的不懈努力重写了拉钩网的爬虫,自我感觉,拉钩是总多招聘网站较难爬取的,其他的58,智联之类的好像和拉钩的反爬机制简直不能比。下面说说我遇到的坑,以供大家参考

基于HttpClient的爬虫

首先通过抓包工具知道是加载方式是ajax,请求方式是json,但是将json的请求连接附上以后报错,查看报错页面:
两种方式爬取拉勾网职位信息的总结_第1张图片
百思不得解,知道看了另外一篇博文:
https://blog.csdn.net/m0_43400362/article/details/88396490#commentBox
才恍然大悟,拉钩的列表页cookie应该是临时的,每次请求列表页的时候服务器都会返回一个新的cookie,而这个cookie是要发送的json的post的请求中去的。上面的博客完美解决了这个问题。这样的话爬列表页就没有问题了?too young too simple,当你爬5页以后拉钩又报错了,这次弹出的是登录页面:
两种方式爬取拉勾网职位信息的总结_第2张图片
这种情况一般是由爬的太快导致的,两分钟爬一个列表页应该不会报这个错误。或者把登录信息包含到cookie中,也能解决这个问题。但是你以为登录了就没问题了吗?
拉钩下的第二个坑
两种方式爬取拉勾网职位信息的总结_第3张图片
以上两个坑都是爬的太快导致的,如果两分钟请求一页,那是没有问题的。但是仅限于列表页,但是想要爬详情页也两分钟爬一个吗?两分钟一个详情页,爬满一个列表页就要半个小时,这个效率。。
总而言之,基于HttpClient 的爬虫对我是不可取的,稍微快一点总是弹出验证信息让你来验证,而我一直在分析这个验证信息是由什么来触发的,需要抓包,调试,分析cookie才能知道问题所在,最后再去改正,对于我这样的小白实在想把头皮抓烂。

基于Selenium+Chromedriver的爬虫

这种方式可能效率不高,但是简单易行,重构代码的两个星期中,其中调试HttpClient就花了十天,后来干脆放弃,转向Selenium,四天把他搞定了。

最后总结一下:大部分网站基本不会封IP,因为一个IP可能代表着一个区域内的用户,很大概率会误封,这个大家不要担心,其次,我建议先用Selenium+Chromedriver爬,这样做的好处就是,每次报错的信息直接在chrome中显示出来了,不至于每次在IDE中一头雾水,完全不知道发生了什么,还要打断点,调试,抓包。当对这个网站的反爬机制有一定了解以后,再使用HttpClient写爬虫,绕过再Selenium+chromedriver中遇到的坑。
最后附上源码:
https://github.com/dongfangguo9/LGS

你可能感兴趣的:(两种方式爬取拉勾网职位信息的总结)