首页 > 编程语言 >Java中的爬虫

Java中的爬虫

时间:2023-06-03 09:33:20浏览次数:49  
标签:Java String 正则表达式 爬虫 爬取 获取 str 文本

爬虫

pattern :表示正则表达式

Matcher:文本匹配器,作用按照正则表达式的规则去读取字符串,从头开始读取

步骤:

  1. 获取正则表达式的对象

    Pattern p=Pattern.compile(" 正则表达式");

  2. 获取文本匹配器的对象

    String str="文本";

    Matcher m=p.matcher(str);

    p:规则,str:大串,m;文本匹配器的对象 m要在str中找符合p规则的小串

  3. 拿着文本匹配器从头开始读取,寻找是否满足规则的字串,如果没有,方法返回false。

    如果有,返回true,在底层记录字串的起始索引和结束索引。 boolean b=m.find();

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

SubString(起始索引,结束索引);包头不包尾

会把截取的小串进行返回

String sl=m.group();

System.out.println(sl);打印

 

循环方法

  1. 获取正则表达式的对象

    Pattern p=pattern.compile("正则表达式");

  2. 获取文本匹配器的对象

    拿着m去读取str,找符合p规则的字串

    Matcher m=p.matcher(str) str:文本

    1. 利用循环获取

    while(m.find()){

    String s=m.group();

    System.out.println(s);

    }

    m.find()为false时,循环结束

爬取模式

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

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

例:abbbbbbb

贪婪爬取:ab+ --> abbbbbbb

非贪婪爬取:ab+? --> ab

在数量词+*后面加上问号,就是非贪婪爬取

 

方法

方法名说明
public String [] matches(String regex) 判断字符串是否满足正则表达式的规则
public String replaceAll(String regex,String newStr) 按正则表达式的规则替换
public String split(String regex) 按照正则表达式的规则切割字符串

捕获分组和非捕获分组

捕获分组(默认):

后续还要用本组的数据

正则内部使用: \ \组号

正则外部使用:$ 组号

非捕获分组:

分组之后不需要再用本组数据,仅仅是把数据括起来,不占组号

 

注意:组号从1开始,连续不间断,以左括号为基准,最左边是第一组

符号含义举例
(?:正则) 获取所有 java(?:8|11|17)
(?=正则) 获取前面部分 java(?=8|11|17)
(?!正则) 获取不是指定内容的前面部分 java(?!8|11|17)

标签:Java,String,正则表达式,爬虫,爬取,获取,str,文本
From: https://www.cnblogs.com/longlonglong777/p/17453310.html

相关文章

  • Linux安装java(jdk8)
    1.查看Linux系统是否有自带的jdk:1、输入:java-version如果有输出版本信息,则需要卸载原本的jdk,如果没有说明linux系统没有安装jdk可以跳过下面步骤直接进行下一步的安装。2、发现有版本信息输入:rpm-qa|grepjava检测jdk的安装包,(注意:rpm符没有时记得下载一个输入:apt-getins......
  • 如何使用JavaScript格式化日期 – JS中的日期格式化
    日期是许多JavaScript应用程序的基本组成部分,无论是在网页上显示当前日期还是处理用户输入以安排事件。但以清晰一致的格式显示日期对于积极的用户体验至关重要。在本文中,我们将探讨在JavaScript中格式化日期的各种技术,使您能够以您的应用程序所需的格式显示日期。(前端教程......
  • Java官方笔记6继承
    继承Java只有单继承,最顶级的父类是Object。子类会继承父类的fields和methods,而不会继承constructors,因为constructors不属于methods,但是子类可以通过super调用父类的constructor。子类继承父类的范围是:public、protected、package-private隐式转换,子类转父类(只有1个爸爸):Objec......
  • 基于JAVA的springboot篮球论坛系统,附源码+数据库+论文+PPT
    1、项目介绍考虑到实际生活中在篮球论坛方面的需要以及对该系统认真的分析,将系统权限按管理员和用户这两类涉及用户划分。(a)管理员;管理员使用本系统涉到的功能主要有:首页、个人中心、用户管理、篮球论坛、系统管理等功能。管理员用例图如图3-1所示。(b)用户;用户使用本系统......
  • Java Native Interface Programming
    http://journals.ecs.soton.ac.uk/java/tutorial/native1.1/implementing/index.html JavaNativeInterfaceProgramming TheJDK1.1supportstheJavaNativeInterface(JNI).Ononehand,theJNIdefinesastandardnamingandcallingconventionsothattheJa......
  • Java的可见性和原子性
    1.工作内存和主内存2.可见性和共享变量3.约束4.共享变量可见性的原理4.1可见性的步骤4.2保证可见性的必要条件synchronized实现可见性5.1synchronized实现的内容5.2JMM关于synchronized的规定5.3synchronized互斥代码的过程6volatile实现可见性6.1重排序6.2asifseri......
  • 构建服务器集群感知的 Java 应用程序
    ApacheZooKeeper和LinkedInProjectNorbert在分布式企业Java应用程序中简化服务器组协调服务器集群对于高度可扩展的Java企业级应用程序开发已司空见惯,但是应用程序级别的服务器集群感知目前并不属于JavaEE的一部分。在本文中,MukulGupta和PareshPaladiya向您介......
  • Google Java编程风格指南
    作者:Hawstein目录前言源文件基础源文件结构格式命名约定编程实践Javadoc后记前言这份文档是GoogleJava编程风格规范的完整定义。当且仅当一个Java源文件符合此文档中的规则,我们才认为它符合Google的Java编程风格。与其它的编程风格指南一样,这里所讨论的不仅仅是编码格......
  • Java编译与反编译
    Java编译与反编译什么是编译利用编译程序从源语言编写的源程序产生目标程序的过程。用编译程序产生目标程序的动作。编译就是把高级语言变成计算机可以识别的2进制语言,计算机只认识1和0,编译程序把人们熟悉的语言换成2进制的。编译程序把一个源程序翻译成目标程序的工作过程......
  • 40基于java的美食菜谱分享系统设计与实现
    本章节给大家带来一个基于java的美食菜谱分享系统设计与实现,餐饮分享平台设计与实现,可用于美食在线分享平台,作为世界各地爱好美食的人们的桥梁,为其创造一个氛围好的平台,促进美食世界的文化交流。该系统是一个供商家或者个人推荐美食的网站,网站不支持交易仅供分享。引言在21世......