学-Java-网络爬虫需要哪些基础知识

说起网络爬虫,大家想起的估计都是 Python ,诚然爬虫已经是 Python 的代名词之一,相比 Java 来说就要逊色不少。有不少人都不知道 Java 可以做网络爬虫,其实 Java 也能做网络爬虫而且还能做的非常好,在开源社区中有不少优秀的 Java 网络爬虫框架,例如 webmagic 。我的第一份正式工作就是使用 webmagic 编写数据采集程序,当时参与了一个舆情分析系统的开发,这里面涉及到了大量网站的新闻采集,我们就使用了 webmagic 进行采集程序的编写,由于当时不知道其设计原理,使用起来还是走了不少弯路,其实 webmagic 的设计借鉴了 Scrapy ,所以它也能像 Scrapy 一样强大,关于 webmagic 框架我们将在后续展开详细的讨论。 在后面的几年工作中,也参与了好几个爬虫项目,但是大多数都是使用 Python ,抛开语言不谈,爬虫也是有一套思想的。这些年写爬虫程序,对我个人的技术成长帮助非常大,因为在爬虫的过程中,会遇到各种各样的问题,其实做网络爬虫还是非常考验技术的,除了保证自己的采集程序可用之外,还会遇到被爬网站各种奇奇怪怪的问题,比如整个 HTML 页面有没一个 class 或者 id 属性,你要在这种页面提取表格数据,并且做到优雅的提取,这就是非常考验你的想象力以及技术啦。非常有幸在刚入行的时候就接触到了网络爬虫这一块,它加快了我对互联网的理解和认知,扩宽了我的视野。 这几年来网络爬虫比较火,如果你想学习 Java 网络爬虫,我根据我自己的经验总结了一下,想入门学习 Java 网络爬虫需要知道的四点基础知识。 1、有 “道德” 的爬虫我为什么会把这一点放在最前面呢?因为我觉得这一点比较重要,什么叫有 “道德” 的爬虫呢?就是遵循被爬服务器的规则,不去影响被爬服务器的正常运行,不把被爬服务搞垮,这就是有 “道德” 的爬虫。 经常有人讨论的一个问题就是爬虫合法吗?知乎一下你看到的将是这样的 答案千千万,在这众多答案中,我个人比较赞同下面的这个回答 爬虫作为一种计算机技术就决定了它的中立性,因此爬虫本身在法律上并不被禁止,但是利用爬虫技术获取数据这一行为是具有违法甚至是犯罪的风险的。所谓具体问题具体分析,正如水果刀本身在法律上并不被禁止使用,但是用来捅人,就不被法律所容忍了。爬虫为不违法?取决于你做的事情为不违法,网络爬虫的本质是什么?网络爬虫的本质是用机器代替人工去访问页面。我查看公开的新闻肯定不犯法,所以我去采集公开在互联网上的新闻也不犯法,就像各大搜索引擎网站一样,别的网站巴不得别搜索引擎的蜘蛛抓取到。另一种恰恰相反的情况是去采集别人隐私的数据,你自己去查看别人的隐私信息这就是一种违法的行为,所以用程序去采集也是违法的,这就像答案中所说的水果刀本身不违法,但是用来捅人就违法啦。 要做到有 “道德” 的爬虫,Robots 协议是你必须需要了解的,下面是Robots 协议的百度百科 在很多网站中会申明 Robots 协议告诉你哪些页面是可以抓取的,哪些页面是不能抓取的,当然 Robots 协议只是一种约定,就像公交车上的座位一样标明着老弱病残专座,你去坐了也不违法。 除了协议之外,我们的采集行为上也需要克制,在 『数据安全管理办法(征求意见稿)』的第二章第十六条指出: 网络运营者采取自动化手段访问收集网站数据,不得妨碍网站正常运行;此类行为严重影响网站运行,如自动化访问收集流量超过网站日均流量三分之一,网站要求停止自动化访问收集时,应当停止。这条规定指出了爬虫程序不得妨碍网站正常运行,如果你使用爬虫程序把网站搞垮了,真正的访问者就不能访问该网站了,这是一种非常不道德的行为。应该杜绝这种行为。 除了数据的采集,在数据的使用上同样需要注意,我们即使在得到授权的情况下采集了个人信息数据,也千万不要去出卖个人数据,这个是法律特别指出禁止的,参见: 根据《最高人民法院 最高人民检察院关于办理侵犯公民个人信息刑事案件适用法律若干问题的解释》第五条规定,对“情节严重”的解释: ...

October 4, 2019 · 2 min · jiezi