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的格式。我们要做的处理就是把这个字符串当中非数字部分全部去掉然后拼接起来就可以了,这里就不做演示了。
相关推荐
关于用java写的htmlparser网页分析
org.htmlparser.filters.HasAttributeFilter.class org.htmlparser.filters.HasChildFilter.class org.htmlparser.filters.HasParentFilter.class org.htmlparser.filters.HasSiblingFilter.class org.htmlparser....
使用htmlparser制作的网页爬虫例题
HTMLParser提取网页内容,提取网页正文及标题等内容
实现从网页上抓取数据.实现从网页上抓取数据.实现从网页上抓取数据.
HtmlParser提取网页信息的设计与实现
c#版htmlparser htmlparser.dll htmlparser源代码
htmlparser[1]是一个纯的java写的html(标准通用标记语言下的一个应用...毫不夸张地说,htmlparser就是目前最好的html解析和分析的工具。 无论你是想抓取网页数据还是改造html的内容,用了htmlparser绝对会忍不住称赞。
用Winista.HTMLParser的小实例,内涵源代码和所用dll及HTMLParser使用文档,word含有代码编写全过程
HTMLParser提取网页超链接研究 HTMLParser提取网页超链接研究
可以直接运行。java利用htmlparser抓取网页数据
HTMLParser抽取Web网页正文信息.doc
Htmlparser,Jar包,Java,页面解析
htmlparser实现从网页上抓取数据
htmlparser进行网页信息的抽取,里边有实例
HTMLParser.net源代码HTMLParser.net使用demo
基于htmlparser的网页爬虫和java调用excel代码,本人爬取新浪新闻所写的爬虫代码,附带本人练习时所写的代码,非常全。而且可以将爬取的新闻内容直接导入到excel中。
htmlparser-1.2.1jar包下载htmlparser-1.2.1jar包下载