- 1、本文档共21页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第三章 网站分析与提取
常规学习时间:4 周
知识目标:
1 理解HTTP 协议及其在数据采集中的应用
2 掌握网页结构分析技术
3 了解网页抓取技术
4 了解HTML Parse 工具
5 掌握正则表达式的使用
能力目标:
能使用一个最简单的爬虫工具采集数据。
对应教材章节:无
学习指导:
一、在Java 中使用正则表达式
正则表达式可以方便的对数据进行匹配,可以执行更加复杂的字符串 验证、拆分、替换功
能。Java 提供了功能强大的正则表达式API ,在java.util.regex 包下。如果想要在程序中应
用正则表达式则必须依靠Pattern 类与Matcher 类,这两个类都在java.util.regex 包中定义。
Pattern 类的主要作用是进行正则规范的编写,而Matcher 类主要是执行规范,验证一个字符
串是否合其规范。
类 java.util.regex.Pattern 简称 Pattern, 是Java 正则表达式API 中的主要入口,需要使用正
则表达式,从Pattern 类开始。
Pattern.matches()
检查一个正则表达式的模式是否匹配一段文本的最直接方法是调用静态方法
Pattern.matches(),示例如下:
String text =
This is the text to be searched +
for occurrences of the pattern.;
String pattern = .*is.*;
boolean matches = Pattern.matches(pattern, text);
System.out.println(matches = + matches);
上面代码在变量 text 中查找单词 “is ”是否出现,允许”is ”前后包含 0 或多个字符( 由 .*
指定)
Pattern.matches() 方法适用于检查 一个模式在一个文本中出现一次的情况,或适用于Pattern
类的默认设置。
如果需要匹配多次出现,甚至输出不同的匹配文本,或者只是需要非默认设置。需要通过
Ppile() 方法得到一个Pattern 实例。
Ppile()
如果需要匹配一个正则表达式在文本中多次出现,需要通过Ppile() 方法创建一个
Pattern 对象。示例如下
String text =
This is the text to be searched +
for occurrences of the http:// pattern.;
String patternString = .*http://.*;
Pattern pattern = Ppile(patternString);
可以在Compile 方法中,指定一个特殊标志:
Pattern pattern = Ppile(patternString, Pattern.CASE_INSENSITIVE);
Pattern 类包含多个标志(int 类型),这些标志可以控制 Pattern 匹配模式的方式。上面代码中
的标志使模式匹配是忽略大小写
Pattern.matcher()
一旦获得了Pattern 对象,接着可以获得Matcher 对象。Matcher 示例用于匹配文本中的模式.
示例如下
Matcher matcher = pattern.matcher(text);
Matcher 类有一个matches()方法,可以检查文本是否匹配模式。以下是关于Matcher 的一个
完整例子
String text =
This is the text to be searched +
for occurrences of the http:// pattern.;
String patternString = .*http://.*;
Pattern pattern = Ppile(patternString, Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(text);
boolean matches = matcher.matches()
文档评论(0)