手把手Java爬虫教学 - 1. 了解爬虫

article/2025/8/27 8:15:40

一、什么是爬虫

先来看一下百度百科,了解一下爬虫~

我们通过爬虫主要的目的就是爬取数据,好比 A 网站、B 网站有我们所需要的内容,但是这两个网站并没有给我们提供接口,那我们怎么能拿到上面的数据呢?

这时候我们就可以通过爬虫对相关页面进行爬取,将我们需要的数据爬取出来。

二、爬虫的作用

爬虫除去上面那种比较简单的采集数据之外,还有很多作用,来看一下:

1. 自动化测试(Selenium)

2. 漏洞扫描

当然,我用爬虫就是为了做数据采集。

三、爬虫分类

1. 通用网络爬虫

通用网络爬虫又称全网爬虫(Scalable Web Crawler),爬行对象从一些种子 URL 扩充到整个 Web,主要为门户站点搜索引擎和大型 Web 服务提供商采集数据。由于商业原因 ,它们的技术细节很少公布出来。通用网络爬虫的结构大致可以分为页面爬行模块 、页面分析模块、链接过滤模块、页面数据库、URL 队列初始URL集合几个部分。为提高工作效率,通用网络爬虫会采取一定的爬行策略。常用的爬行策略有:深度优先策略、广度优先策略。

2. 聚焦网络爬虫

聚焦网络爬虫(Focused Crawler),又称主题 网络爬虫(Topical Crawler),是指选择性地爬行那些与预先定义好的主题相关页面的网络爬虫。和通用网络爬虫相比,聚焦爬虫只需要爬行与主题相关的页面,极大地节省了硬件和网络资源,保存的页面 也由于数量少而更新快,还可以很好地满足一些特定 人群对特定领域信息的需求 。聚焦网络爬虫和通用网络爬虫相比,增加了链 接评价模块以及内容评价模块。聚焦爬虫爬行策略实现的关键是评价页面内容和链接的重要性,不同的方法计算出的重要性不同,由此导致链接的访问顺序也不同。主要的爬行策略包括:基于内容评价的爬行策略、基于链接结构评价的爬行策略 、基于增强学习的爬行策略、基于语境图的爬行策略。

3. 增量式网络爬虫

增量式网络爬虫(Incremental Web Crawler)是指对已下载网页采取增量式更新和只爬行新产生的或者已经发生变化网页的爬虫,它能够在一定程度上保证所爬 行的页面是尽可能新的页面。增量式爬虫只会在需要的时候爬行新产生或发生更新的页面 ,并不重新下载没有发生变化的页面,可有效减少数据下载量,及时更新已爬行的网页,减小时间和空间上的耗费,但是增加了爬行算法的复杂度和实现难度。增量式网络爬虫的体系结构[包含爬行模块、排序模块、 更新模块、本地页面集、待爬行 URL 集以及本地页面URL 集。

4. Deep Web 爬虫

Web 页面按存在方式可以分为表层网页(Surface Web和深层网页(Deep Web,也 称 Invisible Web Pages 或 Hidden Web)。表层网页是指传统搜索引擎可以索引的页面,以超链接可以到达的静态网页为主构成的 Web 页面。Deep Web 是那些大部分内容不能通过静态链接获取的、隐藏在搜索表单后的,只有用户提交一些关键词 才能获得的 Web 页面。例如那些用户注册后内容才可见的网页就属于 Deep Web。2000 年Bright Planet 指出:Deep Web 中可 访问信息容量是 Surface Web 的几百倍,是互联网上最大、发展最快的新型信息资源 。Deep Web 爬虫体系结构包含六个基本功能模块 (爬行控制器、解析器、表单分析器、表单处理器、响应 分析器、LVS 控制器)和两个爬虫内部数据结构(URL 列表、 LVS 表)

四、爬虫危害

爬虫虽好,但是爬虫也是有危害的。这里我给大家分享一些站点文章,大家自己去看看~

使用爬虫技术入侵平台或数据库,构成危害计算机信息系统安全罪

干货|玩“爬虫”可能触犯的三宗罪

60 天内 300 亿爬虫请求,60 亿登录请求,这届黑客不好对付!|Akamai 2020 网络安全趋势总结

总的一句话:我们学习爬虫是为了学习一些技术,用这些技术做一些有益的事情(好比利用爬虫去做自动化测试),但千万不要通过技术去做一些违法犯罪的事情,技术是无辜的,不要因为为了牟利而滥用它们。


这一讲就讲到这里,有问题可以联系我:QQ 2100363119,欢迎大家访问我的个人网站:https://www.lemon1234.com


http://chatgpt.dhexx.cn/article/5TTPiUES.shtml

相关文章

java爬虫教程:模拟用户表单登录

转自:http://xiaolongonly.cn/2016/06/01/Reptile3/ 这个是爬虫教程第三篇,教大家如何模拟用户表单登录。 前期准备: JSOUP 1.83 jar包 Eclipse 任意版本能运行java就行 谷歌浏览器 第一步:依然是分析页面结构 我们要模拟C…

REmap包介绍及使用

2019独角兽企业重金招聘Python工程师标准>>> #REmap包简介 #包安装 #remapH函数 #remapH案例 #get_theme函数 #remapC函数 #markLineControl函数 #markPointControl函数 #remapC案例 REmap包简介 REmap包是R与echart的对接,在R里调用echar的api直接作图&…

用R语言绘制动态地图,代码奉上!(REmap包详解)

options(remap.ak="MY07CLhm3wKi4N2tQ6WP4kzz21BBZagI") 安装包 library(devtools) install_github(badbye/baidumap) install_github(lchiffon/REmap) baidumap包函数说明 getBaiduMap函数 getBaiduMap(location, width = 400, height = 400, zoom = 10, scale = …

remap()

学习自:【OpenCV入门教程之十七】OpenCV重映射 重映射,就是把一幅图像中某位置的像素放置到另一个图片指定位置的过程。为了完成映射过程, 我们需要获得一些插值为非整数像素的坐标,因为源图像与目标图像的像素坐标不是一一对应的。一般情况下&#xff…

REmap绘制地图

本文出自: http://blog.csdn.net/wzgl__wh/article/details/53108754 REmap这个包是通过调用百度地图API的一个程序包,与Google的ggmap包相比,不用翻墙就可以使用。其函数主要有:remap(),remapB()、remapC()、remapH()…

R语言:使用REmap绘制超炫酷的地图

REmap这个包是通过调用百度地图API的一个程序包,与Google的ggmap包相比,不用翻墙就可以使用。其函数主要有:remap(),remapB()、remapC()、remapH()四个。该程序包目前要github网站上,因此我们需要从github上面下载安装。 install.packages("devtools")#如果安装…

ioremap()

活动地址:CSDN21天学习挑战赛 前言 之前,我们使用 devmem 命令的方式,直接操作寄存器,控制 LED 的亮灭。 今天,我们在内核中使用 ioremap() 来实现该功能。 物理地址 vs 虚拟地址 在嵌入式 Linux 中,通常…

STM32和GD32的GPIO引脚的default(默认) alternate(引脚复用) remap(引脚重映射)三种用法 别把复用和重映射当一回事儿

STM32有很多内置外设,这些外设的外部引脚都是与GPIO复用的。也就是说,一个GPIO如果可以复用为内置外设的功能引脚,那么当这个GPIO作为内置外设使用的时候,就叫做复用 重映射就是引脚重映射,本来每个内置外设都有原来设…

OpenCV函数remap详解

OpenCV函数remap详解 remap的作用是将原影像映射到目标影像的函数。 这是OpenCV文档中的说明。 但这个描述给人的感觉是,云里雾里,到底是需要计算目标到原的映射关系,还是原到目标的映射呢。 经过我的实验发现是需要给出目标到原的映射关系…

remap函数

cvRemap( img1, img1r, mx1, my1 );在这个函数中mx1、my1是由前面函数计算出的校正系数,其指明了具体像素重新分配的位置。在learning opencv的12.3自带程序中可以发现,一般来说my1的值是比较集中的,mx1的值是比较分散的,这满足基…

Python-OpenCV 的 remap函数

恒等映射 result_img 和 原图一模一样 import cv2 import numpy as npimg cv2.imread("OpenCV.png") rows, cols, ch img.shape mapx np.ones(img.shape[:2], np.float32) mapy np.ones(img.shape[:2], np.float32) for i in range(rows):for j in range(cols)…

STM32重映射(Remap)

STM32重映射(Remap) 在外设的初始化中默认为Default重映射函数复用功能 在外设的初始化中默认为Default 在参考手册中 均有USART1的功能,但是若是想要用PB6与PB7作为USART1_TX与USART1_RX则需要用到重映射。 使用PA9 PA10只需要直接配置就…

Opencv remap函数

Opencv remap函数 函数签名实例应用亚像素信息扭曲特效 函数签名 void cv::remap ( InputArray src, OutputArray dst, InputArray map1, InputArray map2, int interpolation, int borderMode BORDER_CONSTANT, const Scalar & borderValue Scalar() ) 将通用几何变换…

OpenCV图像处理——重映射 remap函数

在《学习OpenCV3,OReilly系列丛书》中的第11章常见的图像变换中讲到的“任意映射”,Remap函数。函数cv::remap通常用来纠正校准的立体图像,包括图像变形和图像扭曲。其实这个函数在无人机拍摄延时摄影(使用电子防抖算法&#xff0…

重映射:remap()函数

remap()函数会根据指定的映射形式,将原图像进行重映射几何变换,基于公式如下: dst(x, y) src( mapx(x, y), mapy(x, y) )函数原型C(程序 / 20): void remap( InputArray src, OutputArray dst, InputArray map1, In…

OpenCV:remap()简单重映射

学习自:【OpenCV入门教程之十七】OpenCV重映射 重映射,就是把一幅图像中某位置的像素放置到另一个图片指定位置的过程。为了完成映射过程, 我们需要获得一些插值为非整数像素的坐标,因为源图像与目标图像的像素坐标不是一一对应的。一般情况下&#xff…

JS获取对象键值对中key值的方法

使用Object.keys Object.keys( ) 会返回一个数组,数组中是这个对象的key值列表 所以只要Object.keys(a)[0], 就可以得只包含一个键值对的key值 下面是MDN中对Object.keys的描述 Object.keys() 方法会返回一个由一个给定对象的自身可枚举属性组成的数组&…

C# 键值对

1.初始化一个键值对 1 //初始化定义一个键值对&#xff0c;注意最后的括号 2 Dictionary<int, string> dic new Dictionary<int, string>(); 2.为键值对添加元素 1 //键值对的Add函数 2 dic.Add(2, "zhao"); 3 dic.Add(4, "qian"); 4 dic…

js中往数组对象中添加键值对的方法有哪些?

❤️❤️❤️Topology-le5le智慧光伏能源可视化方案❤️❤️❤️ &#x1f31f;&#x1f31f;&#x1f31f;Topology可视化绘图引擎&#x1f31f;&#x1f31f;&#x1f31f; 1.Object.assign() 用法&#xff1a;Object.assign(源对象, {要添加的键值对}) 2.拓展运算符&…

键值对操作

键值对 RDD 通常用来进行聚合计算。我们一般要先通过一些初始 ETL(抽取、转化、装载)操作来将数据转化为键值对形式。键值对 RDD 提供了一些新的操作接口(比如统计每个产品的评论,将数据中键相同的分为一组,将两个不同的 RDD 进行分组合并等)。 1. 动机 Spark 为包含键值对类…