返回顶部
首页 > 资讯 > 精选 >java网络爬虫的基础知识有哪些
  • 385
分享到

java网络爬虫的基础知识有哪些

2023-06-16 19:06:11 385人浏览 泡泡鱼
摘要

这篇文章主要介绍“java网络爬虫的基础知识有哪些”,在日常操作中,相信很多人在java网络爬虫的基础知识有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”java网络爬虫的基础知识有哪些”的疑惑有所帮助!

这篇文章主要介绍“java网络爬虫的基础知识有哪些”,在日常操作中,相信很多人在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 这两个选项栏。

Request Headers 表示的是该次 Http  请求所需要的请求头的参数,有一些网站会根据请求头来屏蔽爬虫,所以里面的参数还是需要了解一下的,请求头参数中大部分参数都是公用的, User-Agent 和  Cookie 这两个参数使用比较频繁, User-Agent 标识浏览器请求头,Cookie 存放的是用户登录凭证。

Query String Parameters 表示该次 Http 请求的请求参数,对于post  请求来说这个还是非常重要的,因为在这里可以查看到请求参数,对我们模拟登陆等 Post 请求非常有用。

上面是网页版的 HTTP 请求的链接分析,如果需要采集 APP 里面的数据就需要借助模拟器了,因为 APP  里没有调试工具,所以只能借助模拟器,使用较多的模拟器工具有如下两种,有兴趣的可以执行研究。

  • fiddler

  • wireshark

3、学会 HTML 页面解析

我们采集的页面都是 html 页面,我们需要在 HTML 页面中获取我们需要的信息,这里面就涉及到了 HTML 页面解析,也就是 DOM  节点解析,这一点是重中之重,如果你不会这一点就像魔术师没有道具一样,只能干瞪眼啦。例如下面这个 HTML 页面

java网络爬虫的基础知识有哪些

我们需要获取标题 “java user-agent 判断是否电脑访问” ,我们先通过 F12 检查元素

java网络爬虫的基础知识有哪些

标题所在的 span 标签我已经在图中框出来啦,我们该如何解析这个节点信息呢?方法有千千万万,经常使用的选择器应该是 CSS 选择器 和 XPath  :

使用 CSS 选择器解析的写法为:#wgt-ask > h2 > span

使用 XPath 解析的写法为://span[@class="wgt-ask"]

这样就获取到了 span 的节点,值需要取出 text 就好了,对于 CSS 选择器 和 XPath  除了自己编写之外,我们还可以借助浏览器来帮我们完成,例如 chrome 浏览器

java网络爬虫的基础知识有哪些

只需要选中对应的节点,右键找到 Copy ,它提供了几种获取该节点的解析方式,具体的如上图所示,Copy selector 对应的就是 Css  选择器,Copy XPath 对应的是 XPath,这个功能还是非常有用的。

4、了解反爬虫策略

因为现在爬虫非常泛滥,很多网站都会有反爬虫机制,来过滤掉爬虫程序,以便保证网站的可以用,这也是非常有必要的手段,毕竟如果网站不能使用了,就没有利益可谈啦。反爬虫的手段非常多,我们来看看几种常见的反爬虫手段。

基于 Headers 的反爬虫机制

这是一种比较常见的反爬虫机制,网站通过检查 Request Headers 中的 User-Agent 、Referer  参数,来判断该程序是不是爬虫程序。要绕过这种机制就比较简单,我们只需要在网页中先查看该网站所需要的 User-Agent 、Referer  参数的值,然后在爬虫程序的 Request Headers 设置好这些参数就好啦。

基于用户行为的反爬虫机制

这也是一种常见的反爬虫机制,最常用的就是 IP 访问限制,一个 IP  在一段时间内只被允许访问多少次,如果超过这个频次的话就会被认为是爬虫程序,比如豆瓣电影就会通过 IP 限制。

对于这种机制的话,我们可以通过设置代理 IP 来解决这个问题,我们只需要从代理ip网站上获取一批代理ip,在请求的时候通过设置代理 IP 即可。

除了 IP  限制之外,还会有基于你每次的访问时间间隔,如果你每次访问的时间间隔都是固定的,也可能会被认为是爬虫程序。要绕过这个限制就是在请求的时候,时间间隔设置不一样,比例这次休眠  1 分钟,下次 30 秒。

基于动态页面的反爬虫机制

有很多网站,我们需要采集的数据是通过 ajax 请求的或者通过  javascript生成的,对于这种网站是比较麻烦的,绕过这种机制,我们有两种办法,一种是借助辅助工具,例如 selenium  等工具获取渲染完成的页面。第二种方式就是反向思维法,我们通过获取到请求数据的 AJAX 链接,直接访问该链接获取数据。

以上就是爬虫的一些基本知识,主要介绍了网络爬虫的使用工具和反爬虫策略,这些东西在后续对我们的爬虫学习会有所帮助,由于这几年断断续续的写过几个爬虫项目,使用  Java 爬虫也是在前期,后期都是用 python,最近突然间对 Java 爬虫又感兴趣了,所以准备写一个爬虫系列博文,重新梳理一下 Java 网络爬虫,算是对  Java 爬虫的一个总结,如果能帮助到想利用 Java 做网络爬虫的小伙伴,那就更棒啦。Java  网络爬虫预计会有六篇文章的篇幅,从简单到复杂,一步一步深入,内容涉及到了我这些年爬虫所遇到的所有问题。下面是模拟的六篇文章介绍。

1、网络爬虫,原来这么简单

这一篇是网络爬虫的入门,会使用 jsoup 和 HttpClient 两种方式获取到页面,然后利用选择器解析得到数据。最后你会收获到爬虫就是一条 http  请求,就是这么简单。

2、网页采集遇到登录问题,我该怎么办?

这一章节简单的聊一聊获取需要登录的数据,以获取豆瓣个人信息为例,从手动设置 cookies 和模拟登陆这两种方式简单的聊一聊这类问题。

3、网页采集遇到数据 Ajax 异步加载,我该怎么办?

这一章节简单的聊一聊异步数据的问题,以网易新闻为例,从利用 htmlunit 工具获取渲染完页面和反向思维直接获取到 Ajax  请求连接获取数据两种方式,简单的聊一下这类问题的处理方式。

4、网页采集 IP 被封,我该怎么办?

IP 访问被限制这应该是常见的事情,以豆瓣电影为例,主要以设置代理IP为中心,简单的聊一聊 IP  被限制的解决办法,还会简单的聊一下如何搭建自己的ip代理服务。

5、网络采集性能太差,我该怎么办?

有时候对爬虫程序的性能有要求,这种单线程的方式可能就行不通了,我们可能就需要多线程甚至是分布式的爬虫程序啦,所以这一篇主要聊一聊多线程爬虫以及分布式爬虫架构方案。

6、开源爬虫框架 webmagic 使用案例解析

以前用 webmagic 做过一次爬虫,但是那个时候我似懂非懂的,没有很好的理解 webmagic  框架,经过这几年的经历,我现在对这个框架有了全新的认识,所以想按照 webmagic 的规范搭建一个简单的 demo来体验 webmagic  的强大之处。

到此,关于“java网络爬虫的基础知识有哪些”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: java网络爬虫的基础知识有哪些

本文链接: https://lsjlt.com/news/284930.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • java网络爬虫的基础知识有哪些
    这篇文章主要介绍“java网络爬虫的基础知识有哪些”,在日常操作中,相信很多人在java网络爬虫的基础知识有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”java网络爬虫的基础知识有哪些”的疑惑有所帮助!...
    99+
    2023-06-16
  • python爬虫基础知识有哪些
    这篇文章主要介绍“python爬虫基础知识有哪些”,在日常操作中,相信很多人在python爬虫基础知识有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”python爬虫基础知识有哪些”的疑惑有所帮助!接下来...
    99+
    2023-06-02
  • 网络基础知识有哪些
    这篇文章主要介绍网络基础知识有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!网络是由若干节点和连接这些节点的链路构成,表示诸多对象及其相互联系。在数学上,网络是一种图,一般认为专指加权图。网络除了数学定义外,还有...
    99+
    2023-06-27
  • Python3网络爬虫入门知识点有哪些
    本篇内容介绍了“Python3网络爬虫入门知识点有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!  ...
    99+
    2024-04-02
  • Docker的网络基础知识点有哪些
    这篇文章主要介绍“Docker的网络基础知识点有哪些”,在日常操作中,相信很多人在Docker的网络基础知识点有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Docker的网络基础知识点有哪些”的疑惑有所...
    99+
    2023-06-27
  • 网络安全的基础知识有哪些
    今天小编给大家分享一下网络安全的基础知识有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。什么是链接?  &nb...
    99+
    2023-06-04
  • python的网络编程基础知识有哪些
    这篇“python的网络编程基础知识有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“python的网络编程基础知识有哪些...
    99+
    2023-06-26
  • 有哪些Java基础知识
    本篇内容介绍了“有哪些Java基础知识”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! 面向对象与面向过程的区别首先面向过程和面向对...
    99+
    2023-06-16
  • java基础知识有哪些
    这篇文章给大家分享的是有关java基础知识有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1.java基础1.1Java历史Java:由Sun Microsystems公司于1995年5月推出的Java程序设...
    99+
    2023-06-20
  • Java的基础知识有哪些
    这篇文章主要介绍“Java的基础知识有哪些”,在日常操作中,相信很多人在Java的基础知识有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java的基础知识有哪些”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-06-02
  • Python爬虫基础之爬虫的分类知识总结
    目录一、通用爬虫二、搜索引擎的局限性三、Robots协议四、请求与相应一、通用爬虫 通用网络爬虫是搜索引擎抓取系统(Baidu、Google、Sogou等)的一个重要组成部分。主要目...
    99+
    2024-04-02
  • Java基础知识点有哪些
    这篇文章主要介绍“Java基础知识点有哪些”,在日常操作中,相信很多人在Java基础知识点有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java基础知识点有哪些”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-06-02
  • C#网络编程入门基础知识有哪些
    这篇文章主要介绍“C#网络编程入门基础知识有哪些”,在日常操作中,相信很多人在C#网络编程入门基础知识有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C#网络编程入门基础知识有哪些”的疑惑有所帮助!接下来...
    99+
    2023-06-17
  • Java中的基础知识点有哪些
    这篇文章主要讲解了“Java中的基础知识点有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java中的基础知识点有哪些”吧!"Hello World!"先来看一个He...
    99+
    2023-06-02
  • Java入门基础知识有哪些
    这篇文章主要介绍“Java入门基础知识有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java入门基础知识有哪些”文章能帮助大家解决问题。Java 是由Sun Microsystems公司于19...
    99+
    2023-06-02
  • Python反爬虫的知识点有哪些
    这篇文章主要介绍了Python反爬虫的知识点有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python反爬虫的知识点有哪些文章都会有所收获,下面我们一起来看看吧。一、为什么要反爬虫在设计反爬虫系统之前,我...
    99+
    2023-06-17
  • 学习爬虫必须学的基础知识
    数据的来源1)用户自行产生2)去第三方的公司购买数据3)去免费的数据网站下载数据4)人工收集数据5)爬虫获取2.什么是爬虫网络爬虫(又被称为网页蜘蛛,网络机器人)就是模拟浏览器发送网络请求,接收请求响应,一种按照一定的规则,自动地抓取互联网...
    99+
    2023-06-02
  • python 爬虫基础知识(继续补充)
    学了这么久爬虫,今天整理一下相关知识点,还会继续更新 HTTP协议(HyperText Transfer Protocol,超文本传输协议):是一种发布和接收 HTML页面的方法。 HTTPS(Hypertext Transfer Pr...
    99+
    2023-01-30
    爬虫 基础知识 python
  • web开发人员必须知道的网络基础知识有哪些
    这篇文章主要介绍“web开发人员必须知道的网络基础知识有哪些”,在日常操作中,相信很多人在web开发人员必须知道的网络基础知识有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解...
    99+
    2024-04-02
  • WebPack的基础知识有哪些
    这篇文章主要为大家展示了“WebPack的基础知识有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“WebPack的基础知识有哪些”这篇文章吧。1、什么是We...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作