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,一经查实,立即删除!

相关文章

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

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

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编程中,抽象类和接口是两个非常重要的概念,它们都为代码的可扩展性和复用性提供了基础。但是,它们之间也有一些明显…

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…

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

VMware ESXi 8.0U2c macOS Unlocker & OEM BIOS Huawei (华为) FusionServer 定制版 ESXi 8.0U2 标准版,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款免费数据可视化工具!

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

html做一个画柱形图的软件

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

码蹄集 BD202401 补给

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

Cocos引擎加密方案解析

据2023年数据显示,Cocos引擎全球游戏市场的占有率约为20%,国内手游占有率约为40%,在国内手游市场中,不少热门游戏均为Cocos引擎研发,如《捕鱼达人》、《梦幻西游》、《剑与远征》等。 而在近年来国内火热的小游戏赛道…

java实现分类下拉树,点击时对应搜索---后端逻辑

一直想做分类下拉,然后选择后搜索的页面,正好做项目有了明确的需求,查找后发现el-tree的构件可满足需求,数据要求为:{ id:1, label:name, childer:[……] }形式的,于是乎,开搞! 一…

算法训练营day15--110.平衡二叉树+ 257. 二叉树的所有路径+ 404.左叶子之和+222.完全二叉树的节点个数

一、110.平衡二叉树 题目链接:https://leetcode.cn/problems/balanced-binary-tree/ 文章讲解:https://programmercarl.com/0110.%E5%B9%B3%E8%A1%A1%E4%BA%8C%E5%8F%89%E6%A0%91.html 视频讲解:https://www.bilibili.com/video/BV1Ug411S7m…

体育时间:“中国第一”的出海代表们,一致瞄准了这一赛道?

2024年无疑又是一个体育赛事超级大年。 从1月的亚洲杯,2月的世乒团体锦标赛、第14届冬运会、到6月欧洲杯与美洲杯隔空对决,巴黎奥运会也将在7月盛大开赛,随后则还有8月的巴黎残奥会,对于期待万分的体育粉丝们,这将是极…

计算机编码以及URL转码

目录 一、计算机编码 1.ASCII编码 2. GB2312编码 3.GBK编码 4.UTF-8编码 二、URL转码 1.encodeURI和decodeURI 2.encodeURIComponent 和 decodeURIComponent 三、Base64 一、计算机编码 在计算机中,所有的数据在存储和运算时都要使用二进制数表示&#xf…

Spring Boot程序打包docker镜像

1.将springboot程序使用maven package打包出jar。 2.创建dockerfile。 FROM openjdk:8 VOLUME /tmp EXPOSE 8601 #ADD 后面的参数是项目名字 / 后面的参数是自定义的别名 ADD webflux-hello-0.0.1-SNAPSHOT.jar /webflux-hello.jar #这里的最后一个变量需要和前面起的别名相同…

Python 爬取淘宝指定搜索商品评论 标题 销量 计算sign

只需要替换原来的Cookie和token即可使用,自动计算对应链接地址的sign直接使用即可。需要注意是一个账号爬取过多会有验证码 import json import hashlib import random import timeimport pandas as pd import requestsresults []def fetch_review_list(datas, md…

vuejs3+elementPlus后台管理系统,左侧菜单栏制作,跳转、默认激活菜单

默认激活菜单,效果&#xff1a; 默认激活菜单&#xff0c;效果1&#xff1a; 默认激活菜单&#xff0c;效果2&#xff1a; 跳转链接效果&#xff1a; 制作&#xff1a; <script setup> import {useUserStore} from "/stores/userStore.js"; import {ref} fr…

适配器模式(大话设计模式)C/C++版本

适配器模式 C #include <iostream> using namespace std; // 球员 class Player { protected:string name;public:Player(string name) : name(name) {}virtual void Attack() 0;virtual void Defense() 0;virtual ~Player() {} }; // 前锋 class Forwards : public P…