JavaSE 利用正则表达式进行本地和网络爬取数据(爬虫)

爬虫

正则表达式的作用

作用1:校验字符串是满足规则

作用2:在一段文本中查找满足需要的内容

本地爬虫和网络爬虫

Pattern类 表示正则表达式

Matter类 文本编译器,作用按照正则表达式的规则去读取字符串,从头开始读取,在大串中去找符合匹配规则的子串

方法底层会根据find方法记录的索引进行字符串的截取

subString(起始索引,结束索引)

包头不包尾

爬取第一个

import java.util.regex.Matcher;
import java.util.regex.Pattern;public class Main {public static void main(String[] args) {String str="Java自从问世以来,经历了很多版本,目前企业中" +"用的最多的是Java8和Java11,因为这两个是长期支" +"持的版本,下一个长期支持的版本是Java17,相信在" +"未来不久Java17也会逐渐登上历史舞台";//创建Partton类 表示正则表达式//Matter类  文本编译器,作用按照正则表达式的规则去读取字符串//从头开始读取,在大串中去找符合匹配规则的子串Pattern p=Pattern.compile("Java\\d{0,2}");Matcher m= p.matcher(str);m.find();//拿着文本匹配器从头开始读取,查找是否有满足规则的子串//返回值true false//还会记录子串的起始索引 结束索引+1//方法底层会根据find方法记录的索引进行字符串的截取//subString(起始索引,结束索引)//包头不包尾String s=m.group();System.out.println(s);}
}

依次爬取


import java.util.regex.Matcher;
import java.util.regex.Pattern;public class Main {public static void main(String[] args) {String str="Java自从问世以来,经历了很多版本,目前企业中" +"用的最多的是Java8和Java11,因为这两个是长期支" +"持的版本,下一个长期支持的版本是Java17,相信在" +"未来不久Java17也会逐渐登上历史舞台";//method(str);//获得正则表达式的对象Pattern p=Pattern.compile("Java\\d{0,2}");//获得文本匹配器的对象//拿着m去读取str 找符合p规则的子串Matcher m= p.matcher(str);//用循环爬取while(m.find()){String s=m.group();System.out.println(s);}}private static void method(String str) {//创建Partton类 表示正则表达式//Matter类  文本编译器,作用按照正则表达式的规则去读取字符串//从头开始读取,在大串中去找符合匹配规则的子串Pattern p=Pattern.compile("Java\\d{0,2}");Matcher m= p.matcher(str);m.find();//拿着文本匹配器从头开始读取,查找是否有满足规则的子串//返回true false//还会记录子串的起始索引 结束索引+1//方法底层会根据find方法记录的索引进行字符串的截取//subString(起始索引,结束索引)//包头不包尾String s=m.group();System.out.println(s);}
}

爬取网站中的内容

有条件的爬取数据

定义正则表达式

String regex ="Java(?=8|11|17)"

?表示前面的数据Java (替代的占位符)

=表示在Java后面要跟随的数据

这样写的意思是,在获取的时候,只获取前半部分

先获取到正则表达式的对象

再传递给文本解析器对象

Pattern p = Pattern.compile(regex);
Matcher m=p.matcher(str);

最后用文本解析器调用方法

while(m.find){m.group();
}

find()

如果找到了

方法返回值为true

并且把字符串始末索引加一后进行记录

group()

会按照find记录的索引去记录字符串

((?i)Java)表示不计Java的大小写

需求1

需求2

需求3

!表示非

贪婪爬取和非贪婪爬取

贪婪爬取:在爬取数据的时候尽可能多获取数据

非贪婪爬取:在爬取数据的时候尽可能少获取数据

正则表达式在字符串方法中的使用

练习

快捷键ctr l + p查看方法参数

[\ \w && [ ^ _ ]]+

在前面的范围中去掉下划线_ 得到数字和字母至少出现一次

replaceAll()方法

this表示当前方法调用者的地址值

方法在底层跟之前一样也会创建文本解析器的对象

然后从头开始去读取字符串中的内容,只要有满足的

那么就用第二个参数去替换

split()方法

按照正则表达式下刀切割 在放入字符串数组 返回

在API文档中查找

个人号推广

博客主页

多多!-CSDN博客

Web后端开发

https://blog.csdn.net/qq_30500575/category_12624592.html?spm=1001.2014.3001.5482

Web前端开发

https://blog.csdn.net/qq_30500575/category_12642989.html?spm=1001.2014.3001.5482

数据库开发

https://blog.csdn.net/qq_30500575/category_12651993.html?spm=1001.2014.3001.5482

项目实战

https://blog.csdn.net/qq_30500575/category_12699801.html?spm=1001.2014.3001.5482

算法与数据结构

https://blog.csdn.net/qq_30500575/category_12630954.html?spm=1001.2014.3001.5482

计算机基础

https://blog.csdn.net/qq_30500575/category_12701605.html?spm=1001.2014.3001.5482

回忆录

https://blog.csdn.net/qq_30500575/category_12620276.html?spm=1001.2014.3001.5482

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

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

相关文章

爬虫day2

bs4解析-HTML语法 bs4解析比较简单,但是呢,首先你需要了解一丢丢的html知识,然后再去使用bs4去提取,逻辑和编写难度就会非常简单和清晰. HTML(Hyper Text Markup Language)超文本标记语言,是我们编写网页的最基本也是最核心的一种语言.其语法规则就是用不同的标签对网页上的内…

中间件(express)

中间件(express) 在Express.js中,中间件(Middleware)是一个重要的组成部分,用于处理HTTP请求和响应。中间件函数具有特定的签名,并可以接受请求对象(req)、响应对象&…

[python学习]--使用相对路径导入包

在Python中,使用相对路径导入包或模块通常是在包内部进行的,以便在不指定完整包路径的情况下引用同一包内的其他模块。相对导入使用点(.)来表示当前包或父包。但是,需要注意的是,相对导入在包的外部&#x…

【idea】gradle多模块构建项目内存溢出终止问题解决

背景 idea构建多模块项目,构建报错 Daemon is stopping immediately JVM garbage collector thrashing and after running out of JVM memory 解决 进到下图目录下 在文件管理中进入上面目录添加gradle.properties文件,内容如下 org.gradle.jvmargs-…

【TensorFlow深度学习】在深度学习项目中实施迁移学习策略

在深度学习项目中实施迁移学习策略 在深度学习项目中实施迁移学习策略:加速模型训练与提升性能的艺术1. 迁移学习简介与优势2. 迁移学习的类型3. 代码示例:使用Keras实施特征提取4. 微调模型以进一步提升性能5. 结果评估与模型保存结语在深度学习项目中实施迁移学习策略:加速…

hive on spark 的架构和常见问题 - hive on spark 使用的是 yarn client 模式还是 yarn cluster 模式?

hive on spark 的架构和常见问题 - hive on spark 使用的是 yarn client 模式还是 yarn cluster 模式? 1. 回顾下 spark 的架构图和部署模式 来自官方的经典的 spark 架构图如下: 上述架构图,从进程的角度来讲,有四个角色/组件&…

【面试干货】抽象类与接口的区别

【面试干货】抽象类与接口的区别 💖The Begin💖点点关注,收藏不迷路💖 在Java编程中,抽象类和接口是两个非常重要的概念,它们都为代码的可扩展性和复用性提供了基础。但是,它们之间也有一些明显…

架构师之 Kafka 核心概念入门

Kafka 核心概念 作为架构师,理解 Kafka 的核心概念至关重要。这些概念是构建高效、可靠的 Kafka 系统的基础。 以下是需要掌握的 Kafka 核心概念及其详细说明: 1. Topic 定义:Topic 是 Kafka 中用于存储和分类消息的逻辑命名空间。每个 Topic 代表一类数据流, 例如日志、…

maxwell源码编译安装部署

目录 1、组件环境 2、maxwell安装前提 3、maxwell安装 3.1、maxwell下载 3.1.1、最新版本下载 ​编辑 3.1.2、历史版本下载 3.2、maxwell安装 3.3、maxwell配置 3.2.1、mysql开启binlog 3.3.2、maxwell元数据配置 3.3.3、maxwell配置任务 4、maxwell部署问题 4.1、utf…

django学习入门系列之第三点《CSS基础样式介绍1》

文章目录 高度和宽度块级标签|行内标签的转换字体和颜色往期回顾 高度和宽度 如果在块级标签内,单独定义高度的话,宽度会默认拉满 使用百分比的时候 如果是块级标签,宽度可以用百分比,高度用不了(使用起来没效果&…

Mac OS 安装frida

安装frida和frida-tools Python是基础,提前装好Python 终端执行 python3 -m pip install frida 如果出现error 按照提示处理 信息提示:brew install pipx 于是终端执行: brew install pipx 安装frida: pipx install frida…

jetson设置

首先准备一张16g以上的sd卡 点此下载sd套件 https://www.sdcard.org/downloads/formatter/eula_windows/SDCardFormatterv5_WinEN.zip 这里下载sd卡格式化 然后https://etcher.download/download-etcher/ 下载etcher 看这篇https://blog.csdn.net/automoblie0/article/deta…

Apache Flink在IoT指标开发流处理全过程案例

目录 1. 环境搭建与基本概念 2. 数据摄入 3. 数据解析与转换 4. 定义时间窗口与计算 5. 复杂事件处理 6. 数据输出与存储 7. 整合流程与执行 8. 性能调优与监控 在物联网(IoT)领域,Apache Flink作为强大的流处理框架,能够高效地处理从传感器、设备等来源产生的海量实…

uniapp实现tabBar功能常见的方法

在 UniApp 中实现 Tab 功能通常涉及到使用 <navigator> 组件结合 tabBar 配置&#xff0c;或者通过自定义的视图切换逻辑来实现。以下是两种常见的实现方式&#xff1a; 1. 使用 tabBar 配置 UniApp 支持在 pages.json 文件中配置 tabBar&#xff0c;以在应用的底部或顶…

VMware ESXi 8.0U2c macOS Unlocker OEM BIOS Huawei (华为) FusionServer 定制版

VMware ESXi 8.0U2c macOS Unlocker & OEM BIOS Huawei (华为) FusionServer 定制版 ESXi 8.0U2 标准版&#xff0c;Dell (戴尔)、HPE (慧与)、Lenovo (联想)、Inspur (浪潮)、Cisco (思科)、Hitachi (日立)、Fujitsu (富士通)、NEC (日电)、Huawei (华为)、xFusion (超聚…

前端vue实战项目结构、常用编辑器vs code 配置

5.Complete JSDoc Tags 6.Custom CSS and JS Loader 7.Debugger for Chrome 8.EditorConfig for VS Code 9.ESLint ☆☆☆ 10.gitignore 11.GitLens — Git supercharged 12.npm 13.PostCSS syntax !important 14.Vetur ☆ 15.vscode-icons 16.vue-i18n 17.Markdow…

2024年最值得推荐的10款免费数据可视化工具!

数据可视化之所以受欢迎&#xff0c;不仅因为它简化了我们查看繁杂数据的方式&#xff0c;还在于数据可视化可以加快我们获取数据信息的速度。但是对于初学者来说&#xff0c;使用数据可视化工具并不能够快速上手。因此本篇文章特意为大家列出了10款免费的数据可视化工具&#…

html做一个画柱形图的软件

你可以使用 HTML、CSS 和 JavaScript 创建一个简单的柱形图绘制软件。为了方便起见&#xff0c;我们可以使用一个流行的 JavaScript 图表库&#xff0c;比如 Chart.js&#xff0c;它能够简化创建和操作图表的过程。 以下是一个完整的示例&#xff0c;展示如何使用 HTML 和 Cha…

码蹄集 BD202401 补给

错误解法&#xff1a;简单将取半前后的综合排序后取最小值&#xff0c;这样没有考虑这样一种情况&#xff1a;取半的时机不对&#xff0c;也许取半某个大一点的P之后反而能进一步取一个补给点了呢&#xff1f;&#xff1f;对不对。这样简单排序只不过是“最省钱”的一种&#x…

人机交互的AB面

每个人都有AB面&#xff0c;每个技术也是如此&#xff0c; 人机交互作为一个多学科的领域&#xff0c;其AB面可以理解为它的优势和劣势&#xff0c;或者积极和消极的影响。以下是人机交互的AB面&#xff1a; A面&#xff08;优势/积极面&#xff09;&#xff1a; 提高效率和生产…