DataLearner 标志DataLearnerAI
最新AI资讯
大模型排行榜
大模型评测基准
大模型列表
大模型对比
资源中心
工具
语言中文
DataLearner 标志DataLearner AI

专注大模型评测、数据资源与实践教学的知识平台,持续更新可落地的 AI 能力图谱。

产品

  • 评测榜单
  • 模型对比
  • 数据资源

资源

  • 部署教程
  • 原创内容
  • 工具导航

关于

  • 关于我们
  • 隐私政策
  • 数据收集方法
  • 联系我们

© 2026 DataLearner AI. DataLearner 持续整合行业数据与案例,为科研、企业与开发者提供可靠的大模型情报与实践指南。

隐私政策服务条款
  1. 首页/
  2. 博客列表/
  3. 博客详情

网络爬虫原理

2016-09-08 22:03:06
2,980 阅读
java网络爬虫

目录

#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

这里写图片描述
这里写图片描述

DataLearner 官方微信

欢迎关注 DataLearner 官方微信,获得最新 AI 技术推送

DataLearner 官方微信二维码
返回博客列表

相关博客

  • 2022年了,Java和Java的生态怎么样了?
  • Java中自增操作i++与++i的区别
  • Java类型转换中valueOf方法和parseInt方法的区别
  • 《Effective Java 第三版》笔记之七 消除过期的对象引用
  • 《Effective Java 第三版》笔记之六 避免创建不必要的对象
  • Java入门基础笔记-11
  • Java入门基础笔记-10
  • Java入门基础笔记-9

热门博客

  • 1Dirichlet Distribution(狄利克雷分布)与Dirichlet Process(狄利克雷过程)
  • 2回归模型中的交互项简介(Interactions in Regression)
  • 3贝塔分布(Beta Distribution)简介及其应用
  • 4矩母函数简介(Moment-generating function)
  • 5普通最小二乘法(Ordinary Least Squares,OLS)的详细推导过程
  • 6使用R语言进行K-means聚类并分析结果
  • 7深度学习技巧之Early Stopping(早停法)
  • 8手把手教你本地部署清华大学的ChatGLM-6B模型——Windows+6GB显卡本地部署