欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

从爬虫中我们能学习到什么?

程序员文章站 2022-05-17 09:21:36
...

        前段时间,帮公司搞了一下爬虫,爬取了一些数据给公司做业务分析用,有点小小的思考,在这里分享给大家!

注:本文涉及到的爬虫皆为java爬虫设计,但是关于爬虫和防爬的策略都是共通的。

爬虫这个东西,说起来可能有一部分人听着就烦,还有一部分人听着眼前一亮,这是为啥呢?我们都知道,技术是无罪的,有过的是使用技术的人,爬虫从最开的发展出来到今天也是走过了不少历程了,在我眼中爬虫有下面这几个作用:

       1、爬取别人的数据,为自己公司决策和其他方面做参考。

       2、爬取自己的数据,节省了跨系统跨页面的数据获取成本,所见即所得。

       3、做性能测试,测试web接口的稳定性和承载量。

       4、链路爬取数据,捕获用户行为信息,提供用户行为分析的数据来源。

对爬虫比较头疼的人:

      系统架构师,风控专家,web接口开发者等

对爬虫比较感兴趣的人:

     甲方,你的老板,公司的数据分析员,大数据部门

        由于业务的发展和爬虫应用的广泛性,其实在互联网上,大众已经逐渐接受了有爬虫的存在,并且形成了一个协定,就是允许你爬取我的那些地方的数据,不允许你爬取我哪些地方的数据(敏感性),或者是用哪些爬虫爬取数据。

这个在哪里可以看到呢?在大网站的主域名后面加上/robots.txt  就可以看到,比如我们看一下京东的:

https://www.jd.com/robots.txt

从爬虫中我们能学习到什么?

京东的协议页面就明确的指出了,不能爬取的页面(也就是disallow)还有不能使用的爬虫(user-agent)。

        有质素的程序员或者公司呢,都会先看一下这个地方的声明,然后再爬取这个公司的网站信息,但是你不遵守,倒是也是爬取到其他的一些信息,只不过网警或者被爬公司追查到你之后,可能会请你去警察局喝茶了。。。

        我实现爬虫的方式,从简单到复杂有这么几种:

     1、最简单的爬虫:其实就是对网站发起http请求,然后获得数据嘛,如果那个网站防护或者加密不是很严谨的话,我们这样的开发人员是很容易在浏览器的dev模式下,通过network分析出来他的页面加载了,返回list数据行的http接口了,如果登录再不需要认证的话,那么我们就可以直接发起http请求,根据他返回的数据声明实体,进行数据收取操作了。目前我写的最简单的爬虫就是使用httpclient,发送http请求,如果需要登录,则保留cookies的信息,然后重复使用在每个接口上,就可以实现登录访问了。

     2、稍微复杂一点的:你在浏览器dev模式下看不到network下的返回信息,但是这个网站有个特点,就是访问每个url是有规律可循的,比如在url里面就带上了检索条件,或者分页条件,拿csdn举例子,就是博客详情页面就是你的博客地址+博客id(一串数字),而博客列表就是博客地址+/article/list/+页数(第一页就是博客地址),这样,我们使用webmagic框架,就可以通过这样规律的地址实现设定爬取数据。

    3、再稍微高级一点的,需要使用到组合框架了,比如需要登录的,我可以模拟出来一个谷歌浏览器,然后手动登录,之后再用程序去扫描页面内容,这个可以使用到webmagic+selenium框架可以实现。

    4、如果是需要同时爬取多个页面,使用selenium可能比较消耗内存,可以搭配phantomjs来使用,他可以模拟一个浏览器内核,从而减少内存的占用等。

        从中这些来看,为了应对一些被爬取网站的制作需求,爬虫其实是一个综合能力考验的场所,比如http请求的使用,模拟,**,缓存,间歇心跳等策略的使用等等。

那么我们从爬虫上可以学习到什么呢:

       1、任何一个技术都不是孤岛,都需要结合其他的东西来使用。

       2、技术是无罪的,爬虫这种技术可以为公司带来效益,也可以为公司带来官司。

       3、数据分析和埋点操作是每个公司都应该掌握的一项技术,在未来的发展中,为公司决策会带来不小的收益。

       4、我们再开发-设计网络接口的时候,也需要提防爬虫的存在,虽然不能避免,但是可以让他爬取数据的速度慢一点(当爬取速度没有数据更新速度快时,数据是无效的)

相关标签: 爬虫 java