网络爬虫原理

目录1网络爬虫原理2写网络爬虫的原因3网络爬虫的流程4网络抓包5HTTP状态码说明6Java网络爬虫需要的基础知识1、网络爬虫原理网络爬虫指按照一定的规则(模拟人工登录网页的方式),自动抓取网络上的程序。简单的说,就是讲你上网所看到页面上的内容获取下来,并进行存储。网络爬虫的爬行策略分为深度优先和广度优先。如下图是深度优先的一种遍历方式是A到B到D到E到C

大家好,又见面了,我是你们的朋友全栈君。

目录

1、网络爬虫原理

网络爬虫指按照一定的规则(模拟人工登录网页的方式),自动抓取网络上的程序。简单的说,就是讲你上网所看到页面上的内容获取下来,并进行存储。网络爬虫的爬行策略分为深度优先和广度优先。如下图是深度优先的一种遍历方式是A到B到D 到E 到C到 F(ABDECF)而宽度优先的遍历方式ABCDEF 。

这里写图片描述

2、写网络爬虫的原因

我将为什么写网络爬虫的原因总结为3点,分别是:

(1)互联网中的数据量大,我们不能人工的去收集数据,这样会很浪费时间与金钱。而爬虫有个特点就是能批量、自动化的获取和处理数据。本人写过各大汽车论坛上的爬虫以及大众点评网,tripadvisor(国外网站)的爬虫,爬取的数据已有几千万之多,可想你如果一条条去复制,到老死也完不成吧。

(2)爬虫很酷。前段日子,看到有人利用爬到了腾讯3000万QQ数据,包含(QQ号,昵称,空间名称,会员级别,头像,最新一条说说内容,最新说说的发表时间,空间简介,性别,生日,所在省份,城市,婚姻状况)的详细数据,并绘制了各种有趣的图表。

(3)对于读研、读博,做数据挖掘、数据分析的人而言,没有数据做实验,是一件很蛋疼的事情。你可能每天在各种论坛问这个问那个要数据,是不是很烦呢。

3、网络爬虫的流程

这里写图片描述

简单的网络爬虫,通过上述图便可完成。首先是给定一个待爬取的URL队列,然后通过抓包的方式,获取数据的真实请求地址。接着采用httpclient模拟浏览器将相应的数据抓取下来(一般是html文件或者是json数据)。由于网页中的内容很多,很复杂,很多内容并不是我们需要的,所以我们需要对其进行解析。针对html的解析很简单,通过Jsoup(Dom解析工具)、正则表达式便可完成。针对Json数据的解析,这里我建议一款快速解析工具fastjson(阿里开源的一个工具)

4、网络抓包

网络抓包,(packet capture)就是将网络传输发送与接收的数据包进行截获、重发、编辑、转存等操作,经常被用来进行数据截取等。在针对数据响应为Json或者需要针对需要用户名、密码登陆的网站,抓包显得尤为重要,抓包也是编写网络爬虫的第一步。

这里写图片描述

如图为东方财富网,抓包的结果,可以看出真实响应地址:Request URL和上面网页请求的地址并不相同,而我们再来看看响应的股票数据。响应的数据格式是JSON文件,在这里我们可以看到,股票数据一共有61页,其中当前页的数据为data【Json数据】。

这里写图片描述

所以利用网络抓包,是网络爬虫的第一步,其可以直观的看到数据请求的真实地址,请求方式(post、get请求),数据的类型(html还是Json数据)

5、HTTP状态码说明

HTTP状态码(HTTP Status Code)是用以表示网页服务器HTTP响应状态的3位数字代码。当我们打开一个网页时,如果网页能够返回数据,也就是说影响成功了,一般状态响应码都是200。当然状态响应码,包括很多内容,下面列举了,状态响应码,及其表示的含义,其中加错的是在爬虫中经常遇到的:
100:继续 客户端应当继续发送请求。客户端应当继续发送请求的剩余部分,或者如果请求已经完成,忽略这个响应。
101: 转换协议 在发送完这个响应最后的空行后,服务器将会切换到在Upgrade 消息头中定义的那些协议。只有在切换新的协议更有好处的时候才应该采取类似措施。
102:继续处理 由WebDAV(RFC 2518)扩展的状态码,代表处理将被继续执行。
200:请求成功 处理方式:获得响应的内容,进行处理
201:请求完成,结果是创建了新资源。新创建资源的URI可在响应的实体中得到 处理方式:爬虫中不会遇到
202:请求被接受,但处理尚未完成 处理方式:阻塞等待
204:服务器端已经实现了请求,但是没有返回新的信 息。如果客户是用户代理,则无须为此更新自身的文档视图。 处理方式:丢弃
300:该状态码不被HTTP/1.0的应用程序直接使用, 只是作为3XX类型回应的默认解释。存在多个可用的被请求资源。 处理方式:若程序中能够处理,则进行进一步处理,如果程序中不能处理,则丢弃
301:请求到的资源都会分配一个永久的URL,这样就可以在将来通过该URL来访问此资源 处理方式:重定向到分配的URL
302:请求到的资源在一个不同的URL处临时保存 处理方式:重定向到临时的URL
304:请求的资源未更新 处理方式:丢弃
400:非法请求 处理方式:丢弃
401:未授权 处理方式:丢弃
403:禁止 处理方式:丢弃
404:没有找到 处理方式:丢弃
500:服务器内部错误 服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。一般来说,这个问题都会在服务器端的源代码出现错误时出现。
501:服务器无法识别 服务器不支持当前请求所需要的某个功能。当服务器无法识别请求的方法,并且无法支持其对任何资源的请求。
502:错误网关 作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。
503:服务出错 由于临时的服务器维护或者过载,服务器当前无法处理请求。这个状况是临时的,并且将在一段时间以后恢复。

6、Java网络爬虫需要的基础知识

如下图所示,为我总结的基于java的网络爬虫所需的知识,或者随着学习的深入,可以通过爬虫的深入学习,可以学习到的Java知识。其实,小编本科是个学营销管理的,本科没有学习过Java,利用大四的后3个月吧,就基本把这些搞定了。加油。下面我会对爬虫中的知识写一些博客。有问题,请发邮件1563178220@qq.com
这里写图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/125713.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • FPGA之SDRAM控制器设计(一)

    MT48LC128M4A2–32Megx4x4banks是512MSRAM,总体概述如下图分别从上电初始化,刷新,写,读四个部分进行设计,此外还包含主控状态机,一个顶层。1:上电初始化整体架构:从控制器到要控制的芯片可以分成20位的bus总线,时钟线sdr_clk,数据总线DQ以及DQM。上电时候主要是对bus总线的高4位也就是sdr_cmd进行配置。也就是要做的第一步,比较简单就是对sdr_cmd进行几次操作。其中注意在逻辑设计时候输出的sdr_clk时钟要和..

    2022年4月13日
  • httprunner(6)配置信息config

    httprunner(6)配置信息config前言每个测试用例都应该有config部分,可以配置用例级别。比如name、base_url、variables、verify、export等等案例演示fromhttprunnerimport

    2022年7月31日
  • Dubbo负载均衡策略之 一致性哈希

    Dubbo负载均衡策略之 一致性哈希Dubbo负载均衡策略之一致性哈希1负载均衡在这里引用dubbo官网的一段话——LoadBalance中文意思为负载均衡,它的职责是将网络请求,或者其他形式的负载“均摊”到不同的机器上。避免集群中部分服务器压力过大,而另一些服务器比较空闲的情况。通过负载均衡,可以让每台服务器获取到适合自己处理能力的负载。在为高负载服务器分流的同时,还可以避免资源浪费,一举两得。负载均衡可分为软件负载均衡和硬件负载均衡。在我们日常开发中,一般很难接触到硬件负载均衡。但软件负载均衡还是可以接触到的,比如Nginx

    2022年7月27日
  • 五大常用算法之分支定界法

    五大常用算法之分支定界法看了五大常用算法之一这篇博文,感觉理解了很多,可是纯粹都是理论,缺少一些示例,所以准备综合一篇博文,以帮助自己记忆,原文:一、基本描述   类似于回溯法,也是一种在问题的解空间树T上搜索问题解的算法。但在一般情况下,分支限界法与回溯法的求解目标不同。回溯法的求解目标是找出T中满足约束条件的所有解,而分支限界法的求解目标则是找出满足约束条件的一个解,或是在满足约束条件的解中

    2022年10月31日
  • 全网最全python爬虫精进

    全网最全python爬虫精进4.25(第一天)**第0关认识爬虫**1、初始爬虫爬虫,从本质上来说,就是利用程序在网上拿到对我们有价值的数据。2、明晰路径2-1、浏览器工作原理(1)解析数据:当服务器把数据响应给浏览器之后,浏览器并不会直接把数据丢给我们。因为这些数据是用计算机的语言写的,浏览器还要把这些数据翻译成我们能看得懂的内容;(2)提取数据:我们就可以在拿到的数据中,挑选出对我们有用的数据;(3)存储数据:将挑选出来的有用数据保存在某一文件/数据库中。2-2、爬虫工作原理(1)获取数据:爬虫程序会根据

    2022年5月27日
  • 《大秦帝国之崛起》看后感[通俗易懂]

    《大秦帝国之崛起》看后感[通俗易懂]2019独角兽企业重金招聘Python工程师标准>>>…

    2022年9月16日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号