加入收藏 | 设为首页 | 会员中心 | 我要投稿 西双版纳站长网 (https://www.0691zz.com.cn/)- 数据计算、IT业界、服务器、教程、云日志!
当前位置: 首页 > 运营中心 > 建站资源 > 优化 > 正文

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

发布时间:2019-10-09 09:38:45 所属栏目:优化 来源:平头哥
导读:说起网络爬虫,大家想起的估计都是 Python ,诚然爬虫已经是 Python 的代名词之一,相比 Java 来说就要逊色不少。有不少人都不知道 Java 可以做网络爬虫,其实 Java 也能做网络爬虫而且还能做的非常好,在开源社区中有不少优秀的 Java 网络爬虫框架,例如
副标题[/!--empirenews.page--]

说起网络爬虫,大家想起的估计都是 Python ,诚然爬虫已经是 Python 的代名词之一,相比 Java 来说就要逊色不少。有不少人都不知道 Java 可以做网络爬虫,其实 Java 也能做网络爬虫而且还能做的非常好,在开源社区中有不少优秀的 Java 网络爬虫框架,例如 webmagic 。我的第一份正式工作就是使用 webmagic 编写数据采集程序,当时参与了一个舆情分析系统的开发,这里面涉及到了大量网站的新闻采集,我们就使用了 webmagic 进行采集程序的编写,由于当时不知道其设计原理,使用起来还是走了不少弯路,其实 webmagic 的设计借鉴了 Scrapy ,所以它也能像 Scrapy 一样强大,关于 webmagic 框架我们将在后续展开详细的讨论。

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

在后面的几年工作中,也参与了好几个爬虫项目,但是大多数都是使用 Python ,抛开语言不谈,爬虫也是有一套思想的。这些年写爬虫程序,对我个人的技术成长帮助非常大,因为在爬虫的过程中,会遇到各种各样的问题,其实做网络爬虫还是非常考验技术的,除了保证自己的采集程序可用之外,还会遇到被爬网站各种奇奇怪怪的问题,比如整个 HTML 页面有没一个 class 或者 id 属性,你要在这种页面提取表格数据,并且做到优雅的提取,这就是非常考验你的想象力以及技术啦。非常有幸在刚入行的时候就接触到了网络爬虫这一块,它加快了我对互联网的理解和认知,扩宽了我的视野。

这几年来网络爬虫比较火,如果你想学习 Java 网络爬虫,我根据我自己的经验总结了一下,想入门学习 Java 网络爬虫需要知道的四点基础知识。

1、有 “道德” 的爬虫

我为什么会把这一点放在最前面呢?因为我觉得这一点比较重要,什么叫有 “道德” 的爬虫呢?就是遵循被爬服务器的规则,不去影响被爬服务器的正常运行,不把被爬服务搞垮,这就是有 “道德” 的爬虫。

经常有人讨论的一个问题就是爬虫合法吗?知乎一下你看到的将是这样的

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

答案千千万,在这众多答案中,我个人比较赞同下面的这个回答

爬虫作为一种计算机技术就决定了它的中立性,因此爬虫本身在法律上并不被禁止,但是利用爬虫技术获取数据这一行为是具有违法甚至是犯罪的风险的。所谓具体问题具体分析,正如水果刀本身在法律上并不被禁止使用,但是用来捅人,就不被法律所容忍了。

爬虫违不违法?取决于你做的事情违不违法,网络爬虫的本质是什么?网络爬虫的本质是用机器代替人工去访问页面。我查看公开的新闻肯定不犯法,所以我去采集公开在互联网上的新闻也不犯法,就像各大搜索引擎网站一样,别的网站巴不得别搜索引擎的蜘蛛抓取到。另一种恰恰相反的情况是去采集别人隐私的数据,你自己去查看别人的隐私信息这就是一种违法的行为,所以用程序去采集也是违法的,这就像答案中所说的水果刀本身不违法,但是用来捅人就违法啦。

要做到有 “道德” 的爬虫,Robots 协议是你必须需要了解的,下面是 Robots 协议的百度百科

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

在很多网站中会申明 Robots 协议告诉你哪些页面是可以抓取的,哪些页面是不能抓取的,当然 Robots 协议只是一种约定,就像公交车上的座位一样标明着老弱病残专座,你去坐了也不违法。

除了协议之外,我们在采集行为上也需要克制,在 『数据安全管理办法(征求意见稿)』的第二章第十六条指出:

网络运营者采取自动化手段访问收集网站数据,不得妨碍网站正常运行;此类行为严重影响网站运行,如自动化访问收集流量超过网站日均流量三分之一,网站要求停止自动化访问收集时,应当停止。

这条规定指出了爬虫程序不得妨碍网站正常运行,如果你使用爬虫程序把网站搞垮了,真正的访问者就不能访问该网站了,这是一种非常不道德的行为。应该杜绝这种行为。

除了数据的采集,在数据的使用上同样需要注意,我们即使在得到授权的情况下采集了个人信息数据,也千万不要去出卖个人数据,这个是法律特别指出禁止的,参见:

根据《最高人民法院 最高人民检察院关于办理侵犯公民个人信息刑事案件适用法律若干问题的解释》第五条规定,对“情节严重”的解释:

(1)非法获取、出售或者提供行踪轨迹信息、通信内容、征信信息、财产信息五十条以上的;

(2)非法获取、出售或者提供住宿信息、通信记录、健康生理信息、交易信息等其他可能影响人身、财产安全的公民个人信息五百条以上的;

(3)非法获取、出售或者提供第三项、第四项规定以外的公民个人信息五千条以上的便构成“侵犯公民个人信息罪”所要求的“情节严重”。

此外,未经被收集者同意,即使是将合法收集的公民个人信息向他人提供的,也属于刑法第二百五十三条之一规定的“提供公民个人信息”,可能构成犯罪。

2、学会分析 Http 请求

我们每一次与服务端的交互都是通过 Http 协议,当然也有不是 Http 协议的,这个能不能采集我就不知道啦,没有采集过,所以我们只谈论 Http 协议,在 Web 网页中分析 Http 协议还是比较简单,我们以百度检索一条新闻为例

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

我们打开 F12 调试工具,点击 NetWork 查看版能查看到所有的请求,找到我们地址栏中的链接,主链接一般存在 NetWork 最上面一条链接

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

在右边headers查看栏中,我们能够看到这次请求所需要的参数,在这里我们需要特别注意 Request Headers 和 Query String Parameters 这两个选项栏。

(编辑:西双版纳站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读