Java网络爬虫--概述与原理

目录标题

  • 基本概念与原理
    • 爬虫与搜索系统的关系
    • 爬虫运行原理
    • 爬虫步骤
      • DNS域名解析
    • 爬虫开发本质
    • 网络爬虫的分类
      • 通用网络爬虫
      • 聚集网络爬虫
      • 增量式网络爬虫
      • Deep Web爬虫
  • 参考文献

基本概念与原理

爬虫又叫网络蜘蛛,一种运行在互联网上用来获取数据的自动程序。

  • 互联网的数据,有很多,一般都是根据业务需求来的。
    • 网页(文字、图片、视频)
    • 商品数据
  • 怎么获取数据?
    • HTTP协议
    • 人的操作是通过浏览器的,程序是利用网络请求的相关协议获取数据。
  • 自动化,尽可能减少人工的干预。
    • 爬虫开发的技术,没有限制的。
      • python做网络爬虫是非常流行的。
      • Java 编写爬虫框架。

说明:网络爬虫作为一项技术,更应该服务于社会。在使用该技术的过程中,应遵守Robots 协议(互联网行业数据抓取的道德协议)。同时,需要注意对数据所涉及的知识产权和隐私信息进行保护。

爬虫与搜索系统的关系

搜索系统的数据是爬虫爬取过来?不一定。

搜索系统可以简单的分为两类,通用搜索,站内搜索

通用搜索:像百度,谷歌会爬取互联网上所有的数据 站内搜索:只需要业务系统的数据。 垂直搜索:行业数据和自己的数据。

总结:搜索一定会包含爬虫(除站内搜索外),爬虫爬取的数据不一定是为搜索服务。除了搜索功能以外,爬虫爬取的数据主要用来做数据分析。

爬虫运行原理

模拟浏览器进行网络请求 模拟浏览器渲染(解析)html文档

在这里插入图片描述

爬虫步骤

在这里插入图片描述

  • 指定一个种子url放入到队列中
  • 从队列中获取某个URL
  • 使用HTTP协议发起网络请求
  • 在发起网络请求的过程中,需要将域名转化成IP地址,也就是域名解析
  • 得到服务器的响应,此时是二进制的输入流
  • 将二进制的输入流转换成HTML文档,并解析内容(我们要抓取的内容,比如标题)。
  • 将解除出来的内容保持到数据库
  • 记录当前URL,并标记为已爬取,避免下次重复爬取。
  • 从当前的HTML文档中,解析出页面中包含的其它URL,以供下次爬取
  • 判断解析出来的URL是否已经爬取过了,如果已经爬取就丢弃掉
  • 将还没爬取过的URL,存放到等待爬取的URL队列中。
  • 重复以上的步骤,指导等待爬取的URL队列中没有数据

DNS域名解析

DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。

通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。 DNS协议运行在UDP协议之上,使用端口号53

爬虫开发本质

本质是HTTP请求(计算机网络相关知识,可参考小林图解网络讲解)

使用HTTP GET协议获取数据,使用HTTP POST协议提交数据。

客户端向服务器发送一个请求,请求头包含请求的方法、URL、协议版本、以及包含请求修饰符、客户信息和内容的类似于MIME的消息结构。

服务器以一个状态行作为响应,响应的内容包括消息协议的版本,成功或者错误编码加上包含服务器信息、实体元信息以及可能的实体内容。

通常HTTP消息包括客户机向服务器的请求消息和服务器向客户机的响应消息。这两种类型的消息由一个起始行,一个或者多个头域,一个指示头域结束的空行和可选的消息体组成。
在这里插入图片描述
客户端向服务器发送一个请求,请求头包含请求的方法、URL、协议版本、以及包含请求修饰符、客户信息和内容的类似于MIME的消息结构。

服务器以一个状态行作为响应,响应的内容包括消息协议的版本,成功或者错误编码加上包含服务器信息、实体元信息以及可能的实体内容。

通常HTTP消息包括客户机向服务器的请求消息和服务器向客户机的响应消息。这两种类型的消息由一个起始行,一个或者多个头域,一个指示头域结束的空行和可选的消息体组成。

网络爬虫的分类

通用网络爬虫

通用网络爬虫又称全网爬虫(Scalable Web Crawler),爬行对象从一些种子 URL 扩充到整个 Web,主要为门户站点搜索引擎和大型 Web 服务提供商采集数据。 这类网络爬虫的爬行范围和数量巨大,对于爬行速度和存储空间要求较高,对于爬行页面的顺序要求相对较低,同时由于待刷新的页面太多,通常采用并行工作方式,但需要较长时间才能刷新一次页面。 简单的说就是互联网上抓取所有数据。

聚集网络爬虫

聚焦网络爬虫(Focused Crawler),又称主题网络爬虫(Topical Crawler),是指选择性地爬行那些与预先定义好的主题相关页面的网络爬虫。 和通用网络爬虫相比,聚焦爬虫只需要爬行与主题相关的页面,极大地节省了硬件和网络资源,保存的页面也由于数量少而更新快,还可以很好地满足一些特定人群对特定领域信息的需求 。 简单的说就是互联网上只抓取某一种数据。

增量式网络爬虫

增量式网络爬虫(Incremental Web Crawler)是指对已下载网页采取增量式更新和只爬行新产生的或者已经发生变化网页的爬虫,它能够在一定程度上保证所爬行的页面是尽可能新的页面。 和周期性爬行和刷新页面的网络爬虫相比,增量式爬虫只会在需要的时候爬行新产生或发生更新的页面 ,并不重新下载没有发生变化的页面,可有效减少数据下载量,及时更新已爬行的网页,减小时间和空间上的耗费,但是增加了爬行算法的复杂度和实现难度。 简单的说就是互联网上只抓取刚刚更新的数据。

Deep Web爬虫

Web 页面按存在方式可以分为表层网页(Surface Web)和深层网页(Deep Web,也称 Invisible Web Pages 或 Hidden Web)。 表层网页是指传统搜索引擎可以索引的页面,以超链接可以到达的静态网页为主构成的 Web 页面。 Deep Web 是那些大部分内容不能通过静态链接获取的、隐藏在搜索表单后的,只有用户提交一些关键词才能获得的 Web 页面。

参考文献

  • 《网络采集技术Java网络爬虫实战》
  • Java爬虫

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/333868.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【扩散模型】10、ControlNet | 用图像控制图像的生成(ICCV2023)

论文:Adding Conditional Control to Text-to-Image Diffusion Models 代码:https://github.com/lllyasviel/ControlNet 出处:ICCV2023 Best Paper | 斯坦福 时间:2023.02 一、背景 文本到图像的生成尽管已经有很好的效果&…

全面认识反向代理与负载均衡神器 —— Nginx

目录 一. 前言 二. Nginx 特点和作用 三. Nginx 安装 四. Nginx 常用命令 五. Nginx 核心配置 5.1. 配置文件结构 5.2. 配置文件 main 段核心参数 5.2.1. user 5.2.2. pid 5.2.3. worker_rlimit_nofile_number 5.2.4. worker_rlimit_core 5.2.5. worker_processes_…

C#VS2022 打包成安装包

步骤参考:VisualStudio(2022)- 打包项目文件为.exe安装包_vs2022打包exe-CSDNja 步骤参考上方链接,不过在Application Folder文件夹中加的是\项目名称\bin\Debug\下的全部文件,其他地方一样。 最终生成的安装包在Deb…

NVIDIA Container Toolkit(NVIDIA Docker)

引言 Nvidia Docker该项目已被NVIDIA Container Toolkit取代。此存储库提供的工具已被弃用,并且该存储库已存档。 nvidia-docker不再支持包装器,并且 NVIDIA Container Toolkit 已进行扩展,允许用户配置 Docker 以使用 NVIDIA Container Ru…

网络多线程开发小项目--QQ登陆聊天功能(用户登陆功能实现)

9.1.1用户登陆功能实现 1、需求分析 2、代码实现 2.1、Client和Server端共有类 1)cn.com.agree.qqcommon.Message package cn.com.agree.qqcommon;import lombok.Data; import lombok.extern.slf4j.Slf4j;import java.io.Serializable; Slf4j Data public class M…

pve多台物理机虚拟化 pve虚拟机优势

Proxmox VE是一个运行虚拟机和容器的平台。基于Debian Linux,完全开源。为了获得最大的灵活性,实现了两种虚拟化技术——基于内核的虚拟机(KVM)和基于容器的虚拟化(LXC)。一个主要的设计目标是使管理尽可能容易。运行在单个节点上使用Proxmox VE&#xf…

基于SSM的校园二手交易管理系统的设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是 目录…

AIGC无人直播系统技术

随着信息技术的快速发展和互联网的普及,直播行业迎来了蓬勃发展的机遇。然而,传统的直播方式存在一些局限性,如场地限制、设备携带不便等问题。为了解决这些问题,AIGC推出了一项创新性的无人直播系统技术。 AIGC无人直播系统技术…

linux 系统安全及应用

一、账号安全基本措施 1.系统账号清理 1.将用户设置为无法登录 /sbin/nologin shell——/sbin/nologin却比较特殊,所谓“无法登陆”指的仅是这个用户无法使用bash或其他shell来登陆系统而已,并不是说这个账号就无法使用系统资源。举例来说,…

GIT - 清除历史 Commit 瘦身仓库

目录 一.引言 二.仓库清理 ◆ 创建一个船新分支 ◆ 提交最新代码 ◆ 双指针替换分支 三.总结 一.引言 由于项目运行时间较长,分支较多,且分支内包含很多不同的大文件,随着时间的推移,历史 Git 库的容量日渐增发&#xff0c…

密码学(三)

文章目录 前言一、Software Attestation Overview二、Authenticated Key Agreement三、The Role of Software Measurement 前言 本文来自 Intel SGX Explained 请参考: 密码学(一) 密码学(二) 一、Software Attesta…

SG-8018CA 系列 (晶体振荡器 可编程 可用+105°C )

SG-8018系列是可编程晶体振荡器系列与CMOS输出。虽然该系列提供了与早期SG-8002/SG-8003系列相同的易于编程的频率和其他参数的相似性,但它们也有一个更广泛的工作温度范围,最高限制为105C。除了2.52.0 mm封装,将使电子产品制造商节省板空间&…