HTMLParser 在分析网页的时候有两种方式,一种是Visitor方式另外一种是Filter方式。
在这里我们看看使用filter分析网页信息的方法。
使用Filter方式访问网页,目的就是提取网页上的节点。在这里我们就可以使用HasAttributeFilter来进行分析。例如,我们要在百度上查询www.javaeerun.com的收录情况,那么根据上一篇文章 简单收录查询工具的原理 我们知道了要访问的URL和需要获取的节点,那么接下来就以此为例。
有这么几步是固定的:
Parser parser = new Parser((HttpURLConnection) new URL(url).openConnection());
NodeFilter filter = new HasAttributeFilter(attrName, attrValue);
NodeList nodeList = parser.extractAllNodesThatMatch(filter);
这样我们就已经获得了具有attrName=attrValue的NodeList了,接下来就是对Node的处理了
代码如下:
package com.javaeerun.demo.HTMLparserdemo.filter; import java.io.IOException; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import org.htmlparser.Node; import org.htmlparser.NodeFilter; import org.htmlparser.Parser; import org.htmlparser.filters.HasAttributeFilter; import org.htmlparser.util.NodeList; import org.htmlparser.util.ParserException; public class HasAttributeFilterDemo { public static void main(String[] args) { try { Parser parser = new Parser( (HttpURLConnection) new URL("http://www.baidu.com/s?" + "wd=site%3Awww.javaeerun.com"). openConnection()); parser.setEncoding("GBK"); NodeFilter filter = new HasAttributeFilter("class", "nums"); NodeList nodeList = parser.extractAllNodesThatMatch(filter); if (nodeList != null && nodeList.size() > 0) { Node node = nodeList.elementAt(0); // 获取class="nums"的span System.out.println(node.toHtml()); NodeList nl = node.getChildren(); Node textNode = nl.elementAt(0); // 获取Text节点 System.out.println(textNode.getText()); } } catch (ParserException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
这样,我们就获得了这样的结果:
百度为您找到相关结果N个
这里的N是数字,具有xxx,xxx,xxx的格式。我们要做的处理就是把这个字符串当中非数字部分全部去掉然后拼接起来就可以了,这里就不做演示了。
相关推荐
5. 应用场景:HTMLParser适用于数据抓取、网页自动化测试、内容过滤等多种场景。比如,你可以使用它来提取网页上的特定数据,如价格、评论、链接等;也可以用于验证网页的结构是否符合预期,或者在不影响页面展示的...
本文将详细讲解如何使用Java的htmlparser库实现网页抓取,并探讨其核心概念和用法。 首先,从给定的代码示例中可以看出,这是一个简单的Java程序,用于从指定的URL抓取HTML内容并将其保存到本地文件。这个程序的...
org.htmlparser.filters.HasAttributeFilter.class org.htmlparser.filters.HasChildFilter.class org.htmlparser.filters.HasParentFilter.class org.htmlparser.filters.HasSiblingFilter.class org.htmlparser....
- 过滤器:HTMLParser支持使用过滤器(`NodeFilter`)来定位特定类型的节点,如`TagNameFilter`、`HasAttributeFilter`、`HasChildFilter`等。 - 提取匹配的节点:`extractAllNodesThatMatch(filter)`方法会返回...
本文将详细介绍如何利用HtmlParser这一开源工具来提取网页中的关键信息,并通过数据清洗将其存储到SQL数据库中,以便后续的数据分析和应用。 #### 二、HtmlParser概述 HtmlParser是一种轻量级、高效且易于使用的...
HTMLParser是一款强大的Java库,专用于解析HTML文档并提取其中的...通过熟练掌握HTMLParser的用法,开发者可以高效地从海量的网页数据中获取有价值的信息,为数据分析、搜索引擎优化、自动化测试等多种场景提供支持。
HTMLParser是一个基于Java的开源工具包,专门设计用于解析和分析HTML网页内容。它提供了强大的功能,使得开发者能够轻松地处理HTML文档,提取所需信息,或者进行自动化网页数据抓取。在版本2.0中,这个库可能包含了...
HTMLParser是一款用于Java开发的网页解析库,它允许开发者高效地提取和处理HTML文档中的数据。在Web开发中,尤其是在爬虫程序或者自动化测试中,HTMLParser是一个非常实用的工具。下面将详细介绍HTMLParser库的核心...
使用HTMLParser,我们可以解析网页内容,提取所需信息,如文章标题、链接、图片等。以下是一些核心概念和步骤: 1. **创建自定义解析器**: 首先,我们需要继承Python的`HTMLParser`类,并重写其方法,如`handle_...
这个特性使得HTMLParser特别适合用于数据抓取、网页分析或构建网页爬虫。 在HTMLParser 1.6版本中,主要包含了以下关键知识点: 1. **事件驱动模型**:HTMLParser采用事件驱动的解析模式,当解析器遇到HTML元素如`...
总之,Java利用HTMLParser库可以有效地抓取和解析网页数据,为数据分析、信息监控等任务提供便利。通过不断学习和实践,你可以掌握更多高级技巧,实现更复杂的功能。记得在使用过程中遵守互联网道德,尊重网站的...
### HTMLParser提取网页超链接研究 #### 一、引言 随着互联网技术的快速发展和普及,全球信息资源呈爆炸式增长。在这个过程中,各种互联网搜索引擎(例如百度、谷歌等)应运而生,它们极大地便利了人们获取所需...
网页抓取是HtmlParser的另一个关键应用。通过HTTP或HTTPS协议,它可以获取网页的源代码,并利用内置的解析机制对抓取到的HTML进行分析。开发者可以设置规则来选择性地抓取特定元素,如链接、标题、段落等,这对于...
使用htmlparser制作的网页爬虫例题
本项目就是利用HTMLParser库来编写一个基础的网页爬虫,用于爬取新浪新闻的数据,并将抓取到的数据存储到Excel表格中。以下是关于这个项目的一些关键知识点和实现细节: 1. **HTMLParser库**:HTMLParser是一个开源...
1. **DOM解析**:HTMLParser2.1支持DOM(Document Object Model)解析方式,将HTML文档转换为树形结构,允许开发者通过节点遍历的方式访问网页元素。这种方法易于理解和操作,但可能对内存消耗较高。 2. **事件驱动...
而"需要使用的lib"则表明除了HTMLParser之外,可能还需要其他库,比如`urllib`或`requests`用于发送HTTP请求,`re`进行正则表达式匹配,甚至`pandas`用于数据清洗和分析。 总结来说,"htmlparser抓取网页内容"项目...
### HTMLParser抽取Web网页正文信息的关键知识点 #### 一、HTMLParser简介与应用 HTMLParser是一种用于解析HTML文档的工具,特别适用于从Web网页中提取有用的信息。它能够有效地识别和解析HTML标签,帮助开发者从...
最后,我们使用 InputStreamReader 对象来读取网页的内容,并使用 HTMLParser 来解析网页。 HTMLParser 是一个功能强大且灵活的类库,用于解析和处理网页内容。它提供了多种使用方式和机制,适合不同的应用场景。