`
gstarwd
  • 浏览: 1538485 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

HtmlParser初步研究2

阅读更多

// 获取一个网页上所有的链接和图片链接
  public static void extracLinks(String url) {
    try {
      Parser parser = new Parser(url);
      parser.setEncoding("gb2312");
//过滤 <frame> 标签的 filter,用来提取 frame 标签里的 src 属性所、表示的链接
       NodeFilter frameFilter = new NodeFilter() {
        public boolean accept(Node node) {
          if (node.getText().startsWith("frame src=")) {
            return true;
          } else {
             return false;
          }
        }
      };
//OrFilter 来设置过滤 <a> 标签,<img> 标签和 <frame> 标签,三个标签是 or 的关系
   OrFilte rorFilter = new OrFilter(new NodeClassFilter(LinkTag.class), new
NodeClassFilter(ImageTag.class));
    OrFilter linkFilter = new OrFilter(orFilter, frameFilter);
  //得到所有 经过过滤的标签
  NodeList list = parser.extractAllNodesThatMatch(linkFilter);
  for (int i = 0; i < list.size(); i++) {
    Node tag = list.elementAt(i);
    if (tag instanceof LinkTag)//<a> 标签
    {
      LinkTag link = (LinkTag) tag;
      String linkUrl = link.getLink();//url
       String text = link.getLinkText();//链接文字
       System.out.println(linkUrl + "**********" + text);
    }
    else if (tag instanceof ImageTag)//<img> 标签
    {
      ImageTag image = (ImageTag) list.elementAt(i);
       System.out.print(image.getImageURL() + "********");//图片地址
       System.out.println(image.getText());//图片文字
    }
     else//<frame> 标签
    {
//提取 frame 里 src 属性的链接如 <frame src="test.html"/>
      String frame = tag.getText();
      int start = frame.indexOf("src=");
      frame = frame.substring(start);
       int end = frame.indexOf(" ");
      if (end == -1)
         end = frame.indexOf(">");
      frame = frame.substring(5, end - 1);
      System.out.println(frame);
    }
  }
} catch (ParserException e) {
      e.printStackTrace();
}
}

分享到:
评论

相关推荐

    htmlparser

    META-INF/maven/org.htmlparser/htmlparser/pom.properties META-INF/maven/org.htmlparser/htmlparser/pom.xml org.htmlparser.Parser.class org.htmlparser.PrototypicalNodeFactory.class org.htmlparser.beans....

    HtmlParser

    它广泛应用于搜索引擎优化、数据分析、市场研究等多个领域。 在Python中,HTMLParser是内置的HTML解析器,它允许开发者编写自定义的事件驱动的解析器来处理HTML或XML文档。使用HTMLParser,我们可以解析网页内容,...

    HTMLParser.net源代码HTMLParser.net使用demo

    通过研究这些示例代码,开发者可以了解如何在自己的.NET项目中集成HTMLParser.net,以解析和操作HTML文档。例如,如何创建一个解析器实例,如何使用CSS选择器选取元素,如何监听解析事件等。这些示例将帮助新手快速...

    htmlparser.jar文件

    在描述中提到的“org.htmlparser.Node”和其他的.class文件,这些都是HTMLParser库的核心组成部分。`org.htmlparser.Node` 是HTMLParser中的一个关键接口,它代表HTML文档中的一个节点,可以是元素(Element)、注释...

    c#版htmlparser htmlparser.dll htmlparser源代码

    `htmlparser.dll`是这个库的动态链接库文件,它包含了编译好的类和方法,可以直接在C#项目中引用以使用HTMLParser的功能。在C#项目中,我们可以通过添加对dll的引用来调用库中的方法,比如解析HTML字符串、查找特定...

    HTMLParser提取网页超链接研究

    ### HTMLParser提取网页超链接研究 #### 一、引言 随着互联网技术的快速发展和普及,全球信息资源呈爆炸式增长。在这个过程中,各种互联网搜索引擎(例如百度、谷歌等)应运而生,它们极大地便利了人们获取所需...

    htmlparser-1.2.1 jar

    htmlparser-1.2.1jar包下载htmlparser-1.2.1jar包下载

    htmlparser库与教程

    2. **基本概念**:理解HTMLParser的核心类,如`HTMLDocument`和`Node`,以及它们在解析HTML时的作用。 3. **解析HTML**:学习如何使用`HTMLParser`实例解析HTML字符串或从URL读取HTML内容。这通常涉及到创建`Parser...

    Winista.Htmlparser.Net 源码 +Demo

    2. **WebParser**:可能是一个简单的网页抓取器,利用HtmlParser解析网页,提取所需信息,例如新闻标题、链接等。 开发者可以打开`AnalyzeHtml.sln`,编译并运行这两个项目,以了解HtmlParser的具体使用方法和实际...

    htmlparser网页分析

    2. DOM模型:HTMLParser基于DOM模型工作,将HTML文档转换为一棵节点树。每个HTML元素、属性和文本都对应于树中的一个节点,这使得通过遍历节点来查找和修改HTML内容变得容易。 3. 解析事件驱动:HTMLParser采用事件...

    前端开源库-parse5-htmlparser2-tree-adapter

    在`parse5-master`这个压缩包中,很可能包含了parse5库的源码和相关资源,你可以通过阅读源码、查看示例和文档来更深入地理解这个库的工作原理,以及如何有效地使用`parse5-htmlparser2-tree-adapter`。同时,熟悉这...

    HtmlParser源码及demo

    2. **DOM(Document Object Model)**:HTMLParser基于DOM模型工作,这意味着它会构建一个树形结构来表示HTML文档,其中每个节点代表HTML的一个部分,如元素、属性或文本。用户可以通过遍历DOM树来访问和修改HTML...

    htmlparser1.6最新版

    2. **解析API**:HTMLParser提供了一系列的类和接口,如`HTMLDocType`,`HTMLTag`和`HTMLParserListener`,它们共同构成了强大的解析API。开发者可以通过这些API实现对HTML文档的深度解析和定制化操作。 3. **错误...

    htmlparser2.0的学习文档

    说明了htmlparser2.0的相关事项,同时也给出了htmlparser2.0的api

    htmlParser.jar包

    在很多Web抓取、信息提取以及网页分析的项目中,HTMLParser都是一个理想的工具。 HTMLParser库的设计考虑了易用性和灵活性,它提供了丰富的API,允许开发者通过编程方式来访问和操作HTML文档的各个元素,如标签、...

    HtmlParser 2.1 码源

    2. **解析器模式** HtmlParser提供了两种主要的解析器模式:`SAX-like`(类似SAX的)和`DOM-like`(类似DOM的)。SAX-like模式逐个事件处理,适合处理大型文档,内存占用低;DOM-like模式则将整个HTML结构加载到...

    HTMLParser 使用举例

    * 浏览器前端:作为浏览器的前端,用于显示网页的初步阶段。 * 连接检查:检查连接是否有效。 * 站点监控:检查网页的变化。 HTMLParser 提供了多种机制来帮助实现这些功能,例如 filters、visitors 和 JavaBeans。...

    htmlparser2.1.jar

    2. **事件驱动解析**:除了DOM,HTMLParser2.1也支持事件驱动的解析模式。在这种模式下,解析器在遇到HTML标签、属性、文本等时会触发相应的事件,开发者可以注册监听器来处理这些事件。这种方式对内存友好,尤其...

Global site tag (gtag.js) - Google Analytics