`

htmlparser的简单使用说明

    博客分类:
  • html
阅读更多

一、DOM过滤

    1. 根据attribute过滤
        Parser parser = new Parser(htmlString);// or new Parser(url)
        NodeFilter filter = new HasAttributeFilter("class", "sidebar");// 本例为根据class过滤,当然可以标签中的任意attribute
        NodeList nodelist = parser.extractAllNodesThatMatch(filter);

    2. 根据tag过滤
        NodeList nodelist = parser.parse(new TagNameFilter("table"));// 根据table标签过滤
        or
        NodeList  nodelist = parser.parse(new NodeClassFilter(TableTag.class));

    3. 层级and过滤
        // 如查找示例1中class="sidebar"下面的tr标签
        NodeFilter filter = new HasAttributeFilter("class", "sidebar");
        NodeFilter f = new AndFilter(new TagNameFilter("tr"), new HasParentFilter(filter));
        NodeList nodelist = parser.parse(f);
        or
        // 查找所有table下面的tr
        NodeFilter f = new AndFilter(new TagNameFilter("tr"), new HasParentFilter(new TagNameFilter("table")));
        NodeList nl = parser.parse(f);

    4. or满足
        Parser parser = new Parser(url);
        // parser.setEncoding("UTF-8");
        // 过滤得到class为toptext,或者id为sample的内容
        HasAttributeFilter[] f = new HasAttributeFilter[] {
    new HasAttributeFilter("class", "toptext"),
    new HasAttributeFilter("id", "sample")
        };
        NodeFilter nodeFilter = new OrFilter(f);

       // and过滤类似



二、NodeList遍历及子节点
    1. for循环
       for (int i = 0; i < nodeList.size(); i++) {
            Node node = nodeList.elementAt(i);
       }

    2. SimpleNodeIterator
       SimpleNodeIterator iterator = nodeList.elements();
       while(iterator.hasMoreNodes()) {
            Node node = iterator.nextNode();
       }

    3. 子节点
       NodeList pList = node.getChildren();// 获取子节点
    


三、节点判断
    // 判断node是否为head标签
    if (node instanceof org.htmlparser.tags.HeadingTag) {...}

    // 判断node是否为div标签
    if (node instanceof org.htmlparser.tags.Div) {...}

    // 判断node是否为p标签
    if (node instanceof org.htmlparser.tags.ParagraphTag) {...}

    // MORE ...

    // etc:判断当前div是否class为section
    if ("section".equals(((org.htmlparser.tags.Div) node).getAttribute("class"))) {...}


四、内容获取

    // 获取节点源html内容
    node.toHtml()
   
    // 获取节点文本内容,如输入“<td>abc</td>”,输出“abc”
    node.toPlainTextString
分享到:
评论

相关推荐

    网络爬虫 HTMLParser 使用指南

    4. 使用Lexer的说明 Lexer(词法分析器)在HTMLParser中是一个高级话题。它的使用涉及更复杂的HTML文档处理,初学者在掌握基本使用后可以进一步探索Lexer的使用方法。 5. 页面编码设置 在HTMLParser中设置页面...

    使用_HttpClient_和_HtmlParser_实现简易爬虫

    结合HttpClient和HtmlParser,可以创建一个简单的网络爬虫。首先,HttpClient 用于发送HTTP请求并获取网页内容。然后,HtmlParser 解析这些内容,找出页面中的链接或其他感兴趣的元素。这个过程可以递归进行,以爬取...

    Winista.Htmlparser 源码 C#类库 帮助文档

    `HtmlParser2003`可能是一个特定版本或者针对.NET Framework 2.0的版本,说明这个库兼容较旧的.NET环境。 总结来说,Winista.Htmlparser是一个强大且易用的C# HTML解析库,提供了丰富的API和事件机制,使得处理HTML...

    Winista.Htmlparser

    同时,附带的说明文档详尽地介绍了类库的使用方法和内部机制,方便开发者快速上手和深入理解。 为了更好地理解Winista.Htmlparser的工作原理,我们可以看一个简单的示例。假设我们要从一个新闻网站上提取所有文章...

    python学习笔记说明的PPT

    ### Python学习笔记说明的PPT知识点详述 #### 一、Python简介 - **Python的特点**: - **优雅**:简洁清晰的语法结构。 - **明确**:避免使用隐晦的方式解决问题。 - **简单**:尽可能简化语言结构。 - **...

    AdvancedHTMLParser-6.1.0-py3-none-any.whl.zip

    在提供的"使用说明.txt"文件中,可能会包含关于如何更有效地利用AHP的功能,包括错误处理、性能优化以及与其他Python库的集成等详细信息。建议仔细阅读该文件,以充分利用AHP的所有潜力。 总之,Advanced ...

    Winista.Htmlparse.dll,C#源码,HTML解析

    另外,文件名"bin"可能包含编译后的库文件和其他相关资源,"HtmlParser2003"可能是一个示例项目或测试代码,展示了如何在.NET 2.0或更高版本中使用这个库。而"WebApplication1"则可能是一个基于ASP.NET的Web应用程序...

    java爬虫教程及工具应用

    为了更好地理解Java爬虫的实际应用,下面通过一个简单的示例来说明如何使用Java实现一个基本的网页爬虫。 ##### 4.1 示例目标 假设我们需要爬取一个网站上的新闻标题和链接。首先需要确定网站的URL,然后编写代码...

    spring 的MimeMessageHelper 邮件引擎

    包含发送简单邮件、附件邮件、通过velocity模板发送邮件的工具类 所需要的jar文件 velocity-tools-1.4.jar velocity-tools-view-1.4.jar velocity-1.6.2.jar ...spring 的MimeMessageHelper 邮件引擎方法使用说明文档

    java爬虫,以爬取sohu新闻为例

    以下是对这个Java爬虫项目及其相关知识点的详细说明: 1. **Java爬虫基础**:Java爬虫主要是通过HTTP/HTTPS协议与服务器交互,获取HTML或其他格式的网页内容。常用库有Jsoup、Apache HttpClient、Jsoup和HtmlUnit等...

    设计文档2

    - 使用`crawler.py`程序,该程序利用Python的HTMLParser和SGMLParser的子类MyHTMLParser和ListName来解析网页结构。 - 爬取范围限定在清华新闻网的news子域名下,通过正则表达式提取新闻的URL、标题、正文和时间...

    thinkphp简单爬虫

    在这个实例中,开发者使用ThinkPHP构建了一个简单的爬虫,该爬虫能够自动浏览网页,提取所需的数据,如图片和文章内容。 【描述】中提到的“没有存到数据环节”意味着这个示例可能只关注于爬取数据,但并未实现将...

    Python爬取豆瓣+数据可视化.pdf

    这是一个实例,说明了如何将爬取的数据组织成结构化的格式,以便进行后续的处理和存储。 总结起来,本篇文章主要介绍了使用Python进行网络爬虫的编写,以及如何将获取的数据进行存储和可视化处理。通过实例操作演示...

    廖雪峰Python3.5教程(不带标签)

    - **环境变量设置**:说明如何将Python加入系统的PATH环境变量,以便在命令行中直接使用Python。 #### Python解释器 - **解释器的作用**:解释器负责将Python源代码转换为机器码并执行。 - **常用的Python解释器**...

    常用的jar包简单介绍

    以下是一些常用的jar包及其功能的详细说明: 1. **activation.jar**: 与mail.jar配合使用,支持邮件操作。它提供了对JavaBeans Activation Framework的实现,使得开发者可以处理邮件附件和MIME类型的数据。 2. **...

    python爬虫必备BeatifulSoup4

    BeautifulSoup库可以与多种解析器配合使用,如Python标准库中的解析器HTMLParser,以及第三方库lxml等,从而提供不同的解析速度和标准的兼容性。 知识点一:安装与导入 要使用BeautifulSoup,首先需要安装它。这...

    Java开发:实现网站信息批量析取

    本文将详细介绍如何使用Java语言来实现网站信息的批量提取,并通过具体的例子来说明其实现过程。 #### 技术背景 Java作为一种广泛使用的编程语言,在网络编程方面具有强大的能力。特别是在处理网站数据时,Java...

    HttpClient以及获取页面内容应用

    使用HttpClient发送请求、接收响应很简单,一般需要如下几步即可。 1.创建HttpClient对象。 HttpClient client = new HttpClient(); 2.创建请求方法的实例,并指定请求URL。如果需要发送GET请求,创建HttpGet对象;...

Global site tag (gtag.js) - Google Analytics