本地爬虫
爬虫,即爬取数据的自动程序,分为本地爬虫和网络爬虫。爬虫用到了正则表达式搜索和查找的功能,在一大段字符串或文本中搜索符合特定模式的字符串,需要用到正则表达式。
在Java中,实现爬虫需要用到两个类:Pattern和Matcher
1、Pattern
pattern有模式的意思,在Java中,这个在Java.util.regex中,它的对象用来表示正则表达式的编译表示形式,也可以简单理解为这个类表示正则表达式。pattern
类本身是一个抽象类,但它提供了一个静态方法compile(String regex)
,该方法用于将给定的正则表达式编译成Pattern
实例。编译后的Pattern
对象可以被用于创建Matcher
对象,后者用于对输入字符串进行匹配操作。
使用Pattern
和Matcher
类进行正则表达式匹配的过程通常包括以下几个步骤:
-
编译正则表达式:使用
Pattern.compile(String regex)
方法编译一个字符串形式的正则表达式,并返回一个Pattern
对象。这一步是可选的,因为Matcher
类也提供了接受正则表达式字符串作为参数的构造方法,但直接使用Pattern
类可以提高效率,因为编译操作只需要进行一次。 -
创建
Matcher
对象:使用编译后的Pattern
对象调用matcher(CharSequence input)
方法,传入需要匹配的字符串,从而创建一个Matcher
对象。 -
执行匹配操作:通过
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会识别为非贪婪爬取
网络爬虫
学完网络的知识再来补充。