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

news2024/12/23 2:33:05

爬虫

正则表达式的作用

作用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.coloradmin.cn/o/1843639.html

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

相关文章

Everything 一款功能强大的搜索工具

要在电脑上使用Everything搜索文件,您需要使用以下步骤: 在您的电脑上下载并安装Everything软件。您可以从官方网站https://www.voidtools.com/downloads/下载最新版本的软件。 安装完成后,打开Everything软件。 在搜索栏中输入您要查找的文…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 连续字母长度(100分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 &#x1f…

手把手教你如何部署自己的One Tool助手

手把手教你如何部署自己的One Tool助手 前言安装教程效果图在这里插入图片描述 ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/0fc5cb0f451e4c50b55ec850a5517b0c.png) ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/56331f878b9545d5bff6f938c4b317…

uniapp 项目,用HBuilder X在小程序端 运行项目,发布项目

1. 运行项目(直接在微信开发者工具中导入项目,运行项目会报错,要通过HBuilder X运行项目) 1.1 配置内容,必须是该小程序的开发者才能运行 查看appid, 项目 -- manifest.json 文件 -- 微信小程序配置 -- APPID 小程序…

用国内首家文生软件平台生成一个整蛊拼图小游戏是什么体验?

前言: 众所周知,2023年是中国大模型发展的元年,以ChatGPT3.5为代表的初代语言大模型横空出世,直接掀起了一阵全球范围内的AIGC浪潮。 在中国大模型追星赶月的这一年,技术迭代日新月异,行业趋势不断变化&a…

RabbitMQ 学习笔记

RabbitMQ学习笔记 一些概念 Broker :RabbitMQ服务。 virtual host: 其实就是分组。 Connection:连接,生产者消费者与Broker之间的TCP连接。 Channel:网络信道,轻量级的Connection,使用Chann…

基于SpringBoot+Vue北部湾地区助农平台设计和实现(源码+LW+调试文档+讲解等)

💗博主介绍:✌全网粉丝1W,CSDN作者、博客专家、全栈领域优质创作者,博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 🌟文末获取源码数据库🌟 感兴趣的可以先收藏起来,还…

Centos SFTP搭建

SFTP配置、连接及挂载教程_sftp连接-CSDN博客1、确认是否安装yum list installed | grep openssh-server 2、创建用户和组 sudo groupadd tksftpgroup sudo useradd -g tksftpgroup -d /home/www/tk_data -s /sbin/nologin tksftp01 sudo passwd tksftp013. 配置SFTP注意&a…

【ElasticSearch】ElasticSearch基本概念

ES 是一个开源的高扩展的分布式全文检索引擎,它是对开源库 Luence 的封装,提供 REST API 接口 MySQL 更适合数据的存储和关系管理,即 CRUD;而 ES 更适合做海量数据的检索和分析,它可以秒级地从数据库中检索出我们感兴…

数据结构和算法之复杂度比较

数据结构和算法之复杂度比较 参考如下网址:https://www.bigocheatsheet.com/ 方便快速查询 1. 复杂度比较 2. 常见数据结构复杂度 3. 常见算法复杂度

计网课设-发送TCP数据包

一、效果展示 二、代码实现 import nmap import socket import tkinter as tk from tkinter import messagebox,Listbox from threading import Thread#获取自身IP,从而确定当前局域网范围 def get_ip_address():#创建了一个socket对象,socket.AF_INET表…

计算机网络:应用层 - 文件传输协议 FTP 电子邮件

计算机网络:应用层 - 文件传输协议 FTP & 电子邮件 文件传输协议 FTP电子邮件 文件传输协议 FTP 文件传送协议 FTP(File Transfer Protocol),曾是互联网祝频讲解上使用得最广泛的文件传送协议。 其特点是:若要存取一个文件,…

【ARMv8/v9 GIC 系列 3 -- GIC 的 类型寄存器 GICD_TYPER】

文章目录 GIC 类型寄存器 GICD_TYPERESPI_Range, 位[31:27]RSS, 位[26]No1N, 位[25]A3V, 位[24]IDBits, 位[23:19]DVIS, 位[18]LPIs, 位[17]MBIS, 位[16]NUM_LPIs, 位[15:11]SecurityExtn, 位[10]NMI, 位[9]ESPI, 位[8]CPUNumber, 位[7:5]ITLinesNumber, 位[4:0]GIC 类型寄存器…

嵌入式实验---实验四 DMA传输实验

一、实验目的 1、掌握STM32F103DMA传输程序设计流程; 2、熟悉STM32固件库的基本使用。 二、实验原理 1、利用外部按键KEY1来控制DMA的传送,每按一次KEY1,DMA就传送一次数据到USART1(串口1); 2、该串口…

SAP BC OBB8 自解释字段50个字符加到100个字符的长度

开整 SE11 复制TEXT1_052 -> ZTEXT1_052 并把域 改成TEXT100 se11 修改T052 激活 报错了,是个视图的问题 参考 SAP COEP V_COEP列不一致的问题及处理_sap coep表报错-CSDN博客 更新一下 再激活成功了 但是OBB8 保存的还是50个字符长度 ,中…

Ollma本地大模型沉浸式翻译【403报错解决】

最终效果 通过Chrome的 沉浸式翻译 插件,用OpenAI通用接口调用本地的Ollma上的模型,实现本地的大模型翻译文献。 官方文档指导的Ollama的配置:一定要配置环境变量,否则会出现【403报错】

【Unity设计模式】状态编程模式

前言 最近在学习Unity游戏设计模式,看到两本比较适合入门的书,一本是unity官方的 《Level up your programming with game programming patterns》 ,另一本是 《游戏编程模式》 这两本书介绍了大部分会使用到的设计模式,因此很值得学习 本…

PXE高效批量网络装机(补充) 实验部分

然后把防火墙、安全机制全都给关闭掉,不要让它们干扰后续的实验: 然后安装那几个需要用到的软件包: 如果重启了系统vsftpd是不能自动启动起来的,如果想让该服务每次开机都自动的启动起来,可以执行下图中的命令&#xf…

Python学习笔记15:进阶篇(四)文件的读写。

文件操作 学习编程操作中,我觉得文件操作是必不可少的一部分。不管是读书的时候学习的c,c,工作的前学的java,现在学的Python,没学过的php和go,都有文件操作的模块以及库的支持,重要性毫无疑问。…

eNSP学习——OSPF在帧中继网络中的配置

目录 主要命令 原理概述 实验目的 实验场景 实验拓扑 实验编址 实验步骤 1、基本配置 2、在帧中继上搭建OSPF网络 主要命令 //检查帧中继的虚电路状态 display fr pvc-info//检查帧中继的映射表 display fr map-info//手工指定OSPF邻居,采用单播方式发送报文 [R1]os…