Parser将网页信息解析成为一棵节点树,Node(节点里)保存了信息。
下面是一些常用的类和方法:
Parser解析类方法:
NodeIterator elements();
获取节点迭代器(此方法搭配迭代器的方法可用于获取根节点,详见示例)
void setEncoding(String encoding);
设置编码方式
NodeIterator节点迭代器:
Node nextNode();
下一个节点
boolean hasMoreNodes();
是否还有Node,是则返回true,否则返回false
Node类树形结构进行遍历的函数:
Node getParent():
取得父节点
NodeList getChildren ():
取得子节点的列表(数组)
Node getFirstChild ():
取得第一个子节点
Node getLastChild ():
取得最后一个子节点
Node getPreviousSibling ():
取得前一个兄弟节点
Node getNextSibling ():
取得后一个兄弟节点
Node类取得Node内容的函数:
String getText ():
取得文本
String toPlainTextString():
取得纯文本信息。
String toHtml () :
取得HTML信息(原始HTML)
String toHtml (boolean verbatim):
取得HTML信息(原始HTML)
String toString ():
取得字符串信息(原始HTML)
Page getPage ():
取得这个Node对应的Page对象
int getStartPosition ():
取得这个Node在HTML页面中的起始位置
int getEndPosition ():
取得这个Node在HTML页面中的结束位置
Nodelist节点数组类方法:
Node[] toNodeArray();
转换成节点数组
示例:递归输出网页节点信息
package ParserStudy;
import org.htmlparser.Node;
import org.htmlparser.Parser;
import org.htmlparser.util.NodeList;
import org.htmlparser.util.ParserException;
public class TestNode {
public static void main(String[] args) throws ParserException {
// TODO Auto-generated method stub
String url = "http://localhost:81/hello.php";
String encoding = "GBK";
Parser parser = new Parser(url);
parser.setEncoding(encoding);
Node root = parser.elements().nextNode(); //获取根节点
showNode(root);
public static void showNode(Node node)
if(node == null)
return;
System.out.println("=============================================");
System.out.println("getText:"+node.getText());
System.out.println("toPlainTextString:"+node.toPlainTextString());
System.out.println("toHtml:"+node.toHtml());
System.out.println("toString:"+node.toString());
System.out.println("=============================================");
//获取子节点
NodeList nodelist = node.getChildren();
if(nodelist == null)
return;
Node[] na = nodelist.toNodeArray();
//迭代输出Node信息
for(Node i:na)
showNode(i);
下面是原网页:
我的名字叫:小明性别;男我的年龄是:20<br>我的名字叫:熊性别;女我的年龄是:30<br>我的名字叫:向日葵性别;男我的年龄是:25<br>
</body>
</html>
源网页使用HTML标签,以标签为节点,标签里含的文本(换行符当成文本)和标签为子节点,形成的节点树状图为:
递归时,从根节点开始,先输出根节点的信息,然后依次输出根节点的子节点信息。
从输出的结果可知:
1.HTML的双标签会解析为一个节点
2.HTML的单标签会解析为一个节点
3.文本会解析为一个节点
4.脚本里的换行符会当成文本,从而成为了一个节点(所以第二个输出的节点和最后一个的节点是换行符\n)
Parser将网页信息解析成为一棵节点树,Node(节点里)保存了信息。下面是一些常用的类和方法:Parser解析类方法:NodeIterator elements(); 获取节点迭代器(此方法搭配迭代器的方法可用于获取根节点,详见示例)void setEncoding(String encoding); 设置编码方式NodeIterator节点迭代器:Node n
所以 还是用回了 rich-text组件
支付宝小程序 nodes 属性只支持使用 Array 类型。
如果需要支持 HTML String,则需要自己将 HTML String转化为 nodes 数组,可使用 html-parser转换。
import HTMLParser from “@/static/js/html-parser.js”
HTMLParser将解析过的信息留存为一个树的结构。Node是信息留存的数据类型基础。
请看Node的界说:
public interface Node extends Cloneable;
Node中包括的要领有几类:
1、对付树型结构进行遍历的函数,这些函数最轻易理解:
Node g
声明:转载自http://www.cnblogs.com/loveyakamoz/archive/2011/07/27/2118937.html
HTMLParser具有小巧,快速的优点,缺点是相关文档比较少(英文的也少),很多功能需要自己摸索。对于初学者还是要费一些功夫的,而一旦上手以后,会发现HTMLParser的结构设计很巧妙,非常实用,基本你的各种需求都可以满足。
这里我根据自
import org.htmlparser.Node;
import org.htmlparser.NodeFilter;
import org.htmlparser.Parser;
import org.htmlparser.PrototypicalNodeFactory;
import org.htmlpar
import org.htmlparser.Node;
import org.htmlparser.NodeFilter;
import org.htmlparser.Parser;
import org.htmlparse...
NodeFilter filter = new TagNameFilter ("DIV");
NodeList nodes = parser.extractAllNodesThatMatch(filter); 过滤如div、class等tag的List
2.HasChildFilter
NodeFilter innerFilter = new TagN
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.io.IOException;
public class HTMLParser {
public static void main(String[] args) throws IOException {
// 使用 Jsoup 解析 HTML
Document doc = Jsoup.connect("https://www.example.com").get();
// 选择所有的标题元素
Elements titles = doc.select("h1");
for (Element title : titles) {
System.out.println("标题:" + title.text());
在这段代码中,我们使用了 Jsoup 库解析 HTML,然后选择了所有的标题元素(标签为 `h1`)并输出其文本内容。
辗转相除法求最大公约数
再无名字可选: