`
hojor
  • 浏览: 106455 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

用Java的模式匹配来提取网页中所需内容

阅读更多

 


本篇主要以实际例子来说明一下怎么样用java的模式匹配来提取网页中你所需要的内容,比如说你需要提取一个网页中的<title></title>标签内的文字内容该如何做呢?下面我会做一个介绍。介绍之前我先说明一下此系列文章的目的。我们将会持续写一些关于webspider的技术的文章,结合的例子就是我们前一段时间做的一个入门级的爬虫,我们将来也会把这个爬虫整体的共享出来。
        好言归正传,进入今天的主题,今天要讲的内容是建立在上一篇基础上的,也就是你需要对上一篇的正则表达式有个了解,至少要能看懂,当然也要对java熟悉。   
       首先第一个是上面提到的提取<title>标签的内容。先看代码

    public synchronized String parseTitle(String context)
    {
        String result="";
        String patWhTitle="<\\s*?(title)\\s*?>[\\s\\S]*?</\\s*?(title)\\s*?>";
        String patTitle="</?\\s*?(title)\\s*?>";
        Pattern titlePattern=Pattern.compile(patWhTitle,2);
        Matcher titleMatcher=titlePattern.matcher(context);
        Pattern titlePattern2=Pattern.compile(patTitle, 2);
       
        while(titleMatcher.find())
        {
            String title=titleMatcher.group();
            Matcher titleMatcher2=titlePattern2.matcher(title);
            result+="["+titleMatcher2.replaceAll("")+"]";
        }
        return result;
    }
首先定义两个正则表达式 patWhTitle,这个是要匹配网页中所有<title>标签和标签的内容。patTitle这个正则是只匹配<title>标签。
然后编译匹配等等
本篇所要讲的和上一篇有些不同,多了一步匹配,相信大家都看出来了,这是怎么回事呢?为什么要这么做呢?我结合这个title例子大概讲一下匹配的过程,其他的也都是类似。1、从网页中匹配出所有<title>标签及其内容,e.g<title>myspace</title>。2、从匹配到的string再次匹配出标签。3、然后调用replaceall方法来把标签都替换成“”,只剩下需要的内容。

不知道我是否讲解的清楚了,再贴一个函数来练习下
    public synchronized String parseA(String context)
    {
        String result="";
        String patWhA="<[a]\\s+?[^>]*?>[^<]+?</[a]\\s*?>";
        String patA="</?\\s*?[a][\\s\\S]*?>";
        Pattern aPattern=Pattern.compile(patWhA,2);
        Matcher aMat=aPattern.matcher(context);
        Pattern aPattern2=Pattern.compile(patA,2);
        while(aMat.find())
        {
            String a=aMat.group();
            Matcher mat=aPattern2.matcher(a);
            result+="["+mat.replaceAll("")+"]";
        }
        return result;
    }
这个函数是提取超链接的内容
 

分享到:
评论

相关推荐

    JAVA_API1.6文档(中文)

    java.awt.im 提供输入方法框架所需的类和接口。 java.awt.im.spi 提供启用可以与 Java 运行时环境一起使用的输入方法开发的接口。 java.awt.image 提供创建和修改图像的各种类。 java.awt.image.renderable 提供...

    Java 1.6 API 中文 New

    java.awt.im 提供输入方法框架所需的类和接口。 java.awt.im.spi 提供启用可以与 Java 运行时环境一起使用的输入方法开发的接口。 java.awt.image 提供创建和修改图像的各种类。 java.awt.image.renderable 提供用于...

    JavaAPI1.6中文chm文档 part1

    java.awt.im 提供输入方法框架所需的类和接口。 java.awt.im.spi 提供启用可以与 Java 运行时环境一起使用的输入方法开发的接口。 java.awt.image 提供创建和修改图像的各种类。 java.awt.image.renderable 提供...

    Java实现论文采集分析系统

    在具体算法设计方面,通过分析 Web of Science 论文索引元数据的格式,准确提取出所需的信息并以此为基础设计匹配算法;测试了该算法的有效性以及准确性;在开发过程中,基于瀑布流模式,进行了系统功能实现以及后续...

    java api最新7.0

    java.awt.im 提供输入方法框架所需的类和接口。 java.awt.im.spi 提供启用可以与 Java 运行时环境一起使用的输入方法开发的接口。 java.awt.image 提供创建和修改图像的各种类。 java.awt.image.renderable 提供用于...

    JavaAPI中文chm文档 part2

    java.awt.im 提供输入方法框架所需的类和接口。 java.awt.im.spi 提供启用可以与 Java 运行时环境一起使用的输入方法开发的接口。 java.awt.image 提供创建和修改图像的各种类。 java.awt.image.renderable 提供...

    积分java源码-regex-highlighter:用于在HTML文档中突出显示正则表达式模式匹配/语言语法并使用CSS设置样式的JavaS

    积分java源码正则表达式荧光笔 一种通过 CSS 突出显示 HTML 文档中正则表达式模式匹配的 JavaScript 工具。 虽然此工具主要针对编程语言语法高亮显示,但它可以与任何正则表达式一起使用。 给定正则表达式文件中突出...

    java范例开发大全源代码

     1.2 搭建Java所需环境 3  1.2.1 下载JDK 3  1.2.2 安装JDK 4  1.2.3 配置环境 5  1.2.4 测试JDK配置是否成功 7  实例1 开发第一个Java程序 7  第2章 Java基础类型与运算符(教学视频:39分钟) ...

    java范例开发大全

    1.2 搭建Java所需环境 3 1.2.1 下载JDK 3 1.2.2 安装JDK 4 1.2.3 配置环境 5 1.2.4 测试JDK配置是否成功 7 实例1 开发第一个Java程序 7 第2章 Java基础类型与运算符(教学视频:39分钟) 9 2.1 基础类型 9 实例2 ...

    Java范例开发大全 (源程序)

     1.2 搭建Java所需环境 3  1.2.1 下载JDK 3  1.2.2 安装JDK 4  1.2.3 配置环境 5  1.2.4 测试JDK配置是否成功 7  实例1 开发第一个Java程序 7  第2章 Java基础类型与运算符(教学视频:39分钟) 9  ...

    Java范例开发大全(全书源程序)

    1.2 搭建Java所需环境 3 1.2.1 下载JDK 3 1.2.2 安装JDK 4 1.2.3 配置环境 5 1.2.4 测试JDK配置是否成功 7 实例1 开发第一个Java程序 7 第2章 Java基础类型与运算符 实例2 自动提升 9 实例3 自动转换 10 ...

    java范例开发大全(pdf&源码)

    1.2 搭建Java所需环境 3 1.2.1 下载JDK 3 1.2.2 安装JDK 4 1.2.3 配置环境 5 1.2.4 测试JDK配置是否成功 7 实例1 开发第一个Java程序 7 第2章 Java基础类型与运算符(教学视频:39分钟) 9 2.1 基础类型 9 实例2 ...

    [Java参考文档]

    java.awt.im 提供输入方法框架所需的类和接口。 java.awt.im.spi 提供启用可以与 Java 运行时环境一起使用的输入方法开发的接口。 java.awt.image 提供创建和修改图像的各种类。 java.awt.image.renderable 提供...

    [Java参考文档].JDK_API 1.6

    java.awt.im 提供输入方法框架所需的类和接口。 java.awt.im.spi 提供启用可以与 Java 运行时环境一起使用的输入方法开发的接口。 java.awt.image 提供创建和修改图像的各种类。 java.awt.image.renderable 提供用于...

    正则表达式

    对正则表达式中前一子表达式的引用所指定的并不是那个子表达式的模式,而是与那个模式相匹配的文本.这样,引用就不只是帮助你输入正则表达式的重复部分的快 捷方式了,它还实施了一条规约,那就是一个字符串各个分离的...

    java多商户源码-JDE-Samples:BlackBerryJDE示例

    java多商户源码BlackBerry:registered: ...这是浏览器多部分推送演示所需的一部分。 activation.jar 应从 JavaBeans Activation Framework zip 中提取并作为 activation.jar 放置在 com/rim/samples/server/br

    HaE:HaE-BurpSuite荧光笔和提取器

    由于Java正则表达式库不如Python优雅或方便,因此在使用正则表达式时,HaE要求用户使用()提取所需内容。例如,如果要匹配Shiro应用程序的响应消息,则正常的匹配规则是rememberMe=delete ,如果要提取此内容,则需要...

Global site tag (gtag.js) - Google Analytics