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

一、什么是爬虫

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

我们通过爬虫主要的目的就是爬取数据,好比 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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
对于使用Java爬虫进行多页爬取,可以使用以下方法: 1. 首先,需要实现PageProcessor接口,并设置爬虫的相关配置,如字符集、重试次数和睡眠时间。例如,可以使用以下代码设置配置: ```java private Site site = Site.me() .setCharset("UTF-8") .setRetryTimes(3) .setSleepTime(100); ``` 2. 在process方法中编写抽取逻辑,定义爬取页面的规则。例如,可以使用正则表达式来提取页面中的标题。以下是一个示例代码: ```java public void process(Page page) { List<String> titles = page.getHtml() .css("li > div > div.details > span.link.h-cite.u-repost-of > a") .regex(">(.*?)<\\/a>", 1) .all(); // 将标题存入父类的私有属性中 setTitles(titles); } ``` 3. 使用Spider类来执行爬虫。通过Spider.create方法创建一个Spider对象,并设置要爬取的起始URL。使用.thread方法设置线程数,然后使用.run方法启动爬虫。以下是示例代码: ```java Spider.create(obj) .addUrl(url) .thread(4) // 开启4个线程抓取 .run(); ``` 需要注意的是,爬取多页时,可以在addUrl方法中传入多个URL,或者使用for循环动态生成URL进行爬取。 综上所述,以上是使用Java爬虫进行多页爬取的基本方法。根据具体需求,还可以考虑使用其他技术和工具来实现更复杂的爬取任务。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Java-网页爬虫](https://blog.csdn.net/JohnSmith232/article/details/120193710)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [手把手教你运用JAVA爬虫技术爬取小说](https://blog.csdn.net/hawzhangy/article/details/118050564)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [Java 爬虫简单实现多线程爬取视频](https://blog.csdn.net/weixin_44352679/article/details/102476067)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

他 他 = new 他()

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值