使用jsoup对HTML文档进行解析和操作

来源:互联网 发布:windows连接git服务器 编辑:程序博客网 时间:2024/05/16 16:24

最近做项目需要在java里面解析html标签,听人说jsoup好用,就用了下。

网上搜了下用法,发现都是复制粘贴,就打算自己总结一个。

我当时maven的最新包

<dependency><groupId>org.jsoup</groupId><artifactId>jsoup</artifactId><version>1.11.2</version></dependency>


//所有的对象都是Jsoup包中的。Document doc = Jsoup.parse("HTML字符串");//html转换成documentElements img = doc.select("img[src^=http://baidu.com]");//使用过滤器获取想要的标签集合for (int i = 0; i < img.size(); i++) {//遍历标签集合    Element node = elements.get(i);//获取每一个标签    String src = node.attr("src");//获取属性    node.attr("src","http://blog.csdn.net/hjgzj");//给属性赋值}System.out.println(doc.toString());//打印修改后的HTML

代码中最重要的是过滤器,这个过滤器跟jQuery用法很像,我就对比总结了一下


功能jsoup用法jQuery用法获取a标签"a"$("a")获取class为url的a标签"a.url"$("a[class=url]")获取src=http://abc.com的a标签"a[src=http://abc.com]"$("a[src=http://abc.com]")获取src以http开头的的a标签"a[src^=http]" 获取src以http结尾的的a标签"a[src$=http]" 获取src以http在任意位置的的a标签"a[src*=http]" 获取id=tab的标签"#tab"$("#tab")

如果精通jQuery,那么知道上面这些就够了,你可以任意组合匹配你想要得到的标签。

[]是属性过滤器,你可以根据属性获取标签,如果需要同时满足多个属性的时候,就多写几个[]然后并列就可以了。

如:需要得到value=hello,type=text的input,那么把过滤器组合起来就可以了:"input[value=hello][type=text]"

选择器之间也可以加逗号",",表示或的关系。

如:需要得到value=hello,type=text的input或者src以/a开头的img,这样写就可以了"input[value=hello][type=text],img[src^=/a]",这种写法类似jQuery的$("#id1,#id2")

最常用的就是这几个:属性选择器:[attr=vla],类选择器:.class,标签选择器:input,ID选择器#ID:

还有其他的选择器,我看了下其实不太常用,就不写了,有兴趣看下http://www.open-open.com/jsoup/selector-syntax.htm


阅读全文
0 0
原创粉丝点击