zoukankan      html  css  js  c++  java
  • 使用html parser

    html parser 是一个解析html的java框架 ,可以将你需要的内容从网页中提取出来,可以用来做一个网页爬虫或者简单的数据提取器。

    框架主页:http://htmlparser.sourceforge.net/

    看了下jtidy,也是和它一样的功能,但是html parser似乎更为简便,解析起来支持中文,编码方便。

    学习资源:

    http://www.ibm.com/developerworks/cn/java/l-html-parser/

    http://allenj2ee.javaeye.com/blog/222454

    http://www.blogjava.net/amigoxie/archive/2008/01/18/176200.html

    html parser主要使用一个parser来解析网页,通过过滤器filter或者visitor来访问所需要的节点,目前使用的版本为1.6。

    html parser是使用递归的方式来层级选取节点,所以在使用过滤器和visitor的时候需要添加true来支持子元素的查询,否则默认就只查询当前节点。

    Parser parser = new Parser("http://www.baidu.com");

    这是最简单的代码,通过parser的构造函数传入一个需要解析的网址,生成一个parser对象。

    通过parser对象,就可以解析出一系列的元素。

    filter:

    filter是过滤器,我们使用不同的过滤器来获得想要的不同结果。

    所有的过滤器实现与NodeFilter接口。

    其中最常用的为css选择器过滤器,字符串选择过滤器,节点类型选择过滤器(NodeClassFilter),标签名过滤器(TagNameFilter)等。

    使用方法为:

    new一个过滤器

    NodeFilter filter = new CssSelectorNodeFilter(".cp_kind");

    将过滤器放入需要解析的parser或者nodeList中,true代表递归过滤,默认为false

    NodeList allProductList = nodeList.extractAllNodesThatMatch(filter, true);

    visitor:

    visitor是一个标准访问器,用来定义为访问html页面的哪一部分。

    例如最常用的htmlPage

    代码
    HtmlPage visitor = new HtmlPage(parser);

    parser.visitAllNodesWith(visitor);

    String textInPage
    = visitor.getTitle();
    System.out.println(textInPage);

    //get body
    NodeList nodelist = visitor.getBody();
    System.out.print(nodelist.asString().trim());

    这样就可以将body分离出来

    visitor默认继承与NodeVisitor

    最常用的当然是htmlpage和tagfindingvisitor

    其实html parser不难用,只是网页规则千变万化,解析起来有难度而已。

  • 相关阅读:
    CSS3 transition 过度
    CSS3 2D转换
    jQuery 选择器
    bootstrap、qjuery、插件 、字体网页
    利用jquery.backstretch插件,背景切换
    js 背景自动切换
    Jquery
    分析动态网页请求爬取腾讯视频评论
    追女神助手v0.1
    动态加载网页的爬取总结
  • 原文地址:https://www.cnblogs.com/xiziyin/p/1685487.html
Copyright © 2011-2022 走看看