• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

python爬虫和Java爬虫哪个更好

武飞扬头像
newlifeenjoyit
帮助1

我想很多人入门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的爬虫资料,就能弄懂爬虫了吗?

差的远呢。。

比如分布式,实现的核心,其实就是一个消息队列,和实现去重队列,用的还多是第三方的消息系统(redis,Kafka等),所以你还得学一些消息队列。

再说反爬,反爬简单的就是构造个合法的请求包,换换IP,复杂的就要逆向模拟js,这也和语言没什么太大的关系,要学的是网络协议和JavaScript。

然后什么验证码的识别,这个要学图像识别甚至要弄个AI来学习人的鼠标轨迹。

或者要抓app的数据包来爬虫,这回头还是得学java,分析app源码找破解方法。

这一行,因为涉及的内容太广了,所以网上确实没有什么特别系统的资料,只能你摸到一个坑,填一个坑。。。

在过往的经历中,有过几年爬虫项目经历,回过头来看,写爬虫最重要的是心态,能够接受不断受挫,然后爬起来重新开始,当然技术功底和经验的积累也很重要;其实不需要太纠结是哪种语言的学习资源,最重要的是要先想清楚我们要解决的是什么样的问题,也就是业务场景,然后是解决问题思路和方法,这些无论使用的是什么语言都是相通的;举几个常见的场景:

0、搜索引擎

1、在公开网络上获取数据做分析,产出报告;

2、比价类网站,做推荐;

3、近两年很火的用户画像、信用评估等;

4、……

搜索引擎比较特殊,在爬取数据时需要考虑深度优先or广度优先的算法,同时,也可以通过提高排名的诱惑,来影响目标网站做适当的调整,满足你的要求,如果有SEM推广经验的同学应该会非常熟悉;

第一种场景,其实对爬虫工程师的专业技能要求并不是很高,很多数据分析的同事就可以搞定,遇到的问题多数可以通过IP代理解决,当然如果有需要登录的流程,会比较麻烦;

第二种场景,是相对垂直的领域,目标网站很多时候是电商,且电商类的网站多数会有反爬策略,有些电商会将商品价格图片化处理,增加爬虫获取数据的难度,但纯数字类的图片OCR倒也不是太困难;能搞定这类场景的爬虫工程师找工作应该不是难事;

第三种场景,在近两年人人都说大数据,每家公司都有AI的进程中发展的如火如荼,从产品设计到营销获客,再到互联网金融领域实时授信,都会有非常多的应用场景,也有非常大的招聘需求,当然在开发这类爬虫的过程中遇到的挑战也比较多;如:

1、涉及的数据维度多且实时性要求高

做信用评估,用户的收入、支出、消费习惯、保险等等,一切能描述用户金融属性的数据;这里所涵盖的网站轻轻松松超过了100个,且大多数情况下你需要实时获取到这些数据;就Java来说,涵盖的基础知识有:多线程、Socket、HttpClient、HttpUnit等等;还要搞清楚Http和Https协议;

2、网站的反爬措施

封IP,最简单粗暴的方式,但很多网站不会完全封死,这样有可能会误杀正常的用户,会封你几个小时,然后恢复,IP代理池可以解决大部分的问题,代理资源的更新策略是一个可以好好研究的地方;也有很多可以细扣的点,代理资源不够用了怎么办,能不能想办法利用上用户的手机端,这个时候你会发现,上学的时候学的很多网络原理能帮上忙,它能帮你打开很多思路;如果要利用用户的手机端,要采用哪种连接建立的方式,虚电路?分组报文?采用什么样的架构设计?在你一筹莫展的时候看看netty?很多时候一位优秀的程序员在细节的处理方式上会让人拍手叫绝,优雅高效的解决问题;

JS加密、混淆,最考验js能力的时候到了;如果我们还处于使用js做表单校验的水平,那是时候看看那本经典的大犀牛了,大型网站一般会有专业的前端工程师,写的一手骚气的js,面向对象、自己封装的组件,新潮的框架,你会时不时的怀疑自己的能力;更变态的是禁止调试,遇到过的盆友应该满眼都是泪;

人机识别,验证码,拖拽、点选,花样百出,还有用户行为,如果你的访问路径不符合用户的行为,那么大概率你会被人机识别系统捕获到,下场轻一点的可能是IP被封,账号被封等等,最头疼的是给你返回乱序的数据,你还没办法通过监控手段监测到,等业务端发现,用户可能已经流失了。

当然还会有很多Token校验,请求头校验、请求参数校验、心跳请求校验等等;之前看反爬的文章,有同学提出用少数民族的文字来做加密,这要上线了,估计很多爬虫要凉凉;

3、数据结构化/清洗的难度

别的先不说,如果在我们的场景中要做账单的解析,近千余种的账单一定会让我们头疼,同一家发卡行会发行多种类别的卡,每种卡的账单样式都不太一样,就是相同样式的账单它的实现方式也会不一样,很多时候一张账单的DOM元素嵌套100多层是非常常见的情况,从DOM元素的结构来看,这些账单大都是通过DW类似的工具画出来的,也就是说并不一定会有规律可循,这么多账单怎么解析,如果公司钱多,人海战术那没问题,如果你是小团队开发,一共就3~4个人怎么办?

==============先写到这,剩下的有时间再写吧(习惯性烂尾)=============

4、海量数据对存储的挑战

5、请求量大了以后怎么做架构和性能的优化

当我们把一个爬虫项目写好,维护好,我们会发现用到的都是基础知识;就像武林高手强在内功和心法;

爬虫专用代理IP点我注册免费领取一万IP测试

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgeecee
系列文章
更多 icon
同类精品
更多 icon
继续加载