为什么需求这么大的java爬虫岗位学习资源却比python爬虫少得多?

目前在学java爬虫,震惊于学习资源的匮乏,只能从别人github代码里边猜边学,python爬虫教程那么多而且貌似视频也是一大堆。我去拉勾等网站看了…
关注者
660
被浏览
262,077

38 个回答

我想很多人入门python就是小黄图爬虫,这是最低级的,就是HTTP请求,保存一下图片,用python实现非常快,网上一看,很多爬虫的教程就讲到这里,所以python资源多,实际上其实很单一,看了跟没看没什么区别,都是找一下网页的规律,然后BeautifulSoup解析一下网页,再使用request做HTTP请求,都这样,可能有些还用了多线程多进程,可是都没有考虑到反爬问题,很多有价值的数据都会有反爬,那么很多Python爬虫资料都没卵用


这里分享一下我听闻过的反爬和反反爬,当然我也在学习,不足之处欢迎拍砖

1.

反爬:判断是否为浏览器(最初级反爬)

反反爬:伪造请求头headers,其实就是为User-Agent赋值

2.

反爬:弹出验证码

反反爬:a. 手动输入验证码,就是将验证码图片下载到本地,然后通过PIL库显示一下,当爬虫遇到验证码时会显示出来,我们手动填一下

b.使用打码平台,将验证码对接到相应的打码平台,平台会帮我们输入正确的验证码,平台怎么输入正确验证码的呢?它其实就是租人来填,填多少个有相应的金额可以获取

c.使用Python的图像识别库,如PIL,对验证码图片进行处理,让词表库匹配一下,最后自动填写

我有一个想法就是通过CNN卷积神经网络对验证码中的图片,将验证码图片分割成一个个的字符,获得足够多的字符就可以喂养给CNN,当做训练数据,CNN对图像识别的准确率还是很高的,有兴趣的人可以看看CNN识别手写字体MNIST数据集,目前我还没有这样弄过

当然还有一些很变态的验证码,比如Google的验证码,要你找出图片中的店铺之类的,这个没想法,欢迎大神提点,对于滑动验证码已经有人做了比较成功的尝试

3.

反爬:需要登录才能获得想要的数据

要弄通这一个的反反爬我觉得有必要弄明白登录的一些知识,如cookies、session、token

现在常见的就是session和token,因为将用户敏感信息存到cookies中非常不安全

session其实非常简单,就是用户信息存到服务器中,将对应这个用户信息的唯一id发放给用户,一般存到cookies,理解了这种登录模式,使用反反爬就明确了,将自己正确登录后的cookies保存下来,放到爬虫的cookies中,每次请求都带上,那么服务器就会认为你是登录的用户

token其实也不难理解,很多网站在用户登录成功后,会使用唯一的token来标识不同的用户,那么每次请求头中包含这个token就OK了,这里要注意一下token的格式

4.

反爬:JavaScript逻辑复杂化界面

很多时候界面的数据不是静态的,而是动态的,如通过ajax获得的数据,如果没有使用JavaScript来操作这些数据,那么我们自己访问这个ajax接口就可以获得数据了,那么有些网站,返回的数据非常奇怪,只有通过网站的JavaScript处理后,才是人看的数据,这就非常尴尬了,那么一般有两种方式

反反爬:a. Python模仿JavaScript中的逻辑,因为都可以获得原始的数据,只是人家的数据通过JavaScript处理后才是正常的,那么我们可以使用python实现JavaScript中的逻辑,就可以获得数据了,当然这对JavaScript功底有一定的要求

b. PhantomJS+Selenium,这个其实就没什么好说的了,就会利用自动测试,使用浏览器来获得数据,获得的这些数据都是经过对方JavaScript处理过的可用数据,就是有点慢,不适合分布式爬虫,当然有人说PhantomJS是可以被识别出来的(携程的某次分享)

5.

反爬:基于用户行为

因为爬虫的数据非常快,那么一个用户不可能在一秒都没有就看完这个页面,所以认为你是爬虫,很多网站会对访问频率有个限制,如果你访问的太快,就会被认为不是一个人,那么测试出这个边界就比较重要了,有了边界,就可以最大效率的爬取网站

反反爬:a.模拟用户行为,用户平时怎么浏览,你就怎么做,比如访问速度慢点,或者没爬完一个界面,等个1分钟,这种方式的效率非常慢

b.多IP多账号,一种暴力却很有效的方式,通过多个IP来访问一个网站,这个IP挂了,立刻有另一个IP顶上,那么很多初学者会使用一些免费代理IP,其实免费最贵,我当时也就是这样过来的,免费代理IP巨慢而且不稳定,使用付费代理IP,虽然付费,其实非常便宜,几千个IP随便用,为了避免广告嫌疑,大家就自己去搜付费的IP吧,而多账号其实也是一样的理念,挂了就换


不知不觉写了那么多,回头再看看问题,似乎有点跑题。。。。算了,码字不易,欢迎点赞收藏关注,哈哈哈哈

因为你能见到的绝大多数(至少在知乎是如此)所谓的 Python 爬虫教程都是入门级都算不上的垃圾。

而写这些垃圾的人很多都是宣传自己公众号或者搞培训,忽悠那些业余自学者的三流技术文章作者。