爬虫:正则表达式的应用

本地爬虫 

爬虫,即爬取数据的自动程序,分为本地爬虫和网络爬虫。爬虫用到了正则表达式搜索和查找的功能,在一大段字符串或文本中搜索符合特定模式的字符串,需要用到正则表达式。

在Java中,实现爬虫需要用到两个类:Pattern和Matcher

1、Pattern

pattern有模式的意思,在Java中,这个在Java.util.regex中,它的对象用来表示正则表达式的编译表示形式,也可以简单理解为这个类表示正则表达式。pattern类本身是一个抽象类,但它提供了一个静态方法compile(String regex),该方法用于将给定的正则表达式编译成Pattern实例。编译后的Pattern对象可以被用于创建Matcher对象,后者用于对输入字符串进行匹配操作。

 使用PatternMatcher类进行正则表达式匹配的过程通常包括以下几个步骤:

  1. 编译正则表达式:使用Pattern.compile(String regex)方法编译一个字符串形式的正则表达式,并返回一个Pattern对象。这一步是可选的,因为Matcher类也提供了接受正则表达式字符串作为参数的构造方法,但直接使用Pattern类可以提高效率,因为编译操作只需要进行一次。

  2. 创建Matcher对象:使用编译后的Pattern对象调用matcher(CharSequence input)方法,传入需要匹配的字符串,从而创建一个Matcher对象。

  3. 执行匹配操作:通过Matcher对象提供的方法,如find()matches()lookingAt()group()start()end()等,可以执行查找、匹配、替换等操作。

Pattern类的主要用途是提供正则表达式的编译功能,并将编译后的正则表达式封装在Pattern对象中,以便后续进行高效的匹配操作。由于正则表达式的编译是一个相对耗时的操作,因此通过Pattern类预先编译正则表达式可以显著提高匹配效率。

此外,Pattern类还提供了一些静态常量,用于指定正则表达式的匹配模式,如Pattern.CASE_INSENSITIVE(不区分大小写的匹配)、Pattern.MULTILINE(多行模式)等。这些常量可以通过位或(|)操作符组合使用,以同时指定多个匹配模式。

2、Matcher 文本匹配器

作用:按照正则表达式从头开始读取字符串并进行模式匹配。这个类不能直接创建对象,而是用pattern实例调用方法来创建此类的实例。

常用方法:

1.boolean find()

此方法用于判断文本中是否有与规则相匹配的字符串,如果有,返回true并记录第一次匹配到的字串的起始索引和结束索引+1,

注意:在一个方法内,重复使用find方法,它内部的指针会接着上一次记录的值向后移动

2.String group()

此方法会根据find记录的索引调用subString方法截取字符串,由于subString方法会根据传入的初始索引和结束索引进行截取并且不包含结束索引,这也可以解释为什么find方法记录的结束索引要+1。

贪婪爬取和非贪婪爬取

两者都是正则表达式的匹配模式。

贪婪爬取:尽可能多的获取数据;非贪婪爬取:尽可能少的获取数据

Java默认使用贪婪爬取,只要在正则表达式的最后加上?,Java会识别为非贪婪爬取

网络爬虫

学完网络的知识再来补充。

 

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值