Jsoup-简单优雅的HTML dom解析工具

标签: jsoup html dom | 发表时间:2013-07-15 19:19 | 作者:daofengscar
出处:http://blog.csdn.net

最近在做一个项目,需要在线从官网上下载选手的图片、名称信息,即做一个简易的网络爬虫,实时抓取最新官网选手数据。在网上搜了很多开源工具,一开始试的是webharvest,搞了一个上午,终于被其奇怪的配置文件搞怕了,我就是想链接下载一个在线的HTML页面,然后解析其DOM元素,没有更好的工具吗?

终于,在google上找到了Jsoup,其官网( http://jsoup.org/)上的demo神奇的只有两句话

Document doc =  Jsoup.connect("http://en.wikipedia.org/").get();
Elements newsHeadlines = doc.select("#mp-itn ba");

   你没看错,他可以直接根据你给的链接返回dom,并像jquery那样按照元素类型、ID、CSS样式过滤你要找的dom元素,所有返回的元素都放在Elements中,每个Elements中的元素也可包含子元素,层级清晰。

为什么用Jsoup:

1-没有依赖包,是的,你只要下载( http://jsoup.org/download)jsoup包,放在lib引用中,或者你的团队用Maven,在pom文件中加入如下依赖

<dependency>
  <!-- jsoup HTML parser library @ http://jsoup.org/ -->
  <groupId>org.jsoup</groupId>
  <artifactId>jsoup</artifactId>
  <version>1.7.2</version>
</dependency>

2-语法简单,如果你用过CSS,抑或Jquery,或者在web前端操作过DOM,恭喜你,你会爱上Jsoup。

下面给出代码,大概逻辑是在线下载2013快乐男生66强资料,并显示他们的名称,图片链接地址。

public static void main(String[]args) throwsFileNotFoundException{

            try {

       Documentdocument = Jsoup.connect("http://www.hunantv.com/v/2013/2013superboy/xs/").get();

       Elementselements = document.select(".LD-A");

       StringnameString = "(";

       String[]names= new String[20];

       intj =0;

       for(int i = 0; i < elements.size(); i++) {

           Element element = elements.get(i);

           Elements ss = element.getElementsByTag("h4");

           Elements img = element.getElementsByTag("img");

           String textString = ss.get(0).text();

           if(!(textString.indexOf("强")>=0&& textString.indexOf("十") >=0) &&

                !(textString.indexOf("强")>=0&& textString.indexOf("1") >=0)

                  ){

              StringplayerName = textString;

              StringimgUrl = img.attr("src").toString();

              imgUrl= "/activity/images/superboy/" + PinYinTest.getPinyin(playerName)+".jpg";

              System.err.println("('"+playerName +"','"+ imgUrl +"',1,''),");           

              }

       }

    }catch (IOException e) {

       //TODO Auto-generated catch block

       e.printStackTrace();

}

}

作者:daofengscar 发表于2013-7-15 19:19:04 原文链接
阅读:91 评论:0 查看评论

相关 [jsoup html dom] 推荐:

Jsoup-简单优雅的HTML dom解析工具

- - CSDN博客Web前端推荐文章
最近在做一个项目,需要在线从官网上下载选手的图片、名称信息,即做一个简易的网络爬虫,实时抓取最新官网选手数据. 在网上搜了很多开源工具,一开始试的是webharvest,搞了一个上午,终于被其奇怪的配置文件搞怕了,我就是想链接下载一个在线的HTML页面,然后解析其DOM元素,没有更好的工具吗. 终于,在google上找到了Jsoup,其官网( http://jsoup.org/)上的demo神奇的只有两句话.

使用JSoup解析HTML文件

- - Java译站
HTML是WEB的核心,互联网中你看到的所有页面都是HTML,不管它们是由JavaScript,JSP,PHP,ASP或者是别的什么WEB技术动态生成的. 你的浏览器会去解析HTML并替你去渲染它们. 不过如果你需要自己在Java程序中解析HTML文档并查找某些元素,标签,属性或者检查某个特定的元素是否存在的话,那又该如何呢.

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

- - 互联网旁观者
Java 程序在解析 HTML 文档时,相信大家都接触过 htmlparser 这个开源项目,我曾经在 IBM DW 上发表过两篇关于 htmlparser 的文章,分别是: 从 HTML 中攫取你所需的信息和 扩展 HTMLParser 对自定义标签的处理能力. 但现在我已经不再使用 htmlparser 了,原因是 htmlparser 很少更新,但最重要的是有了 jsoup.

[Android实例] 利用Jsoup解析Html实现的Android招聘信息大全

- - CSDN博客推荐文章
看到很多招聘网站都没有推出招聘信息客户端,想来利用现成的资源,解析他们网站上提供招聘信息,这里就利用了Jsoup来解析HTML中的数据,实现整理归纳,然后显示的一个程序,也算是一个学习的程序吧,这里,我们先看一下图片,以下就程序源码. 源码下载: 点击打开链接. 作者:kangkangz4 发表于2011-12-13 11:09:34 原文链接.

【网络爬虫之JSOUP使用简介】解析一个HTML字符串

- - CSDN博客编程语言推荐文章
来自用户输入,一个文件或一个网站的HTML字符串,你可能需要对它进行解析并取其内容,或校验其格式是否完整,或想修改它. jsonu能够帮你轻松解决这些问题. Jsoup.parse(String html) 方法或. Jsoup.parse(String html, String baseUri)示例代码:.

前端优化三续:用script存放html代码来减少DOM节点数

- - 博客园_旁观者
前端优化三续:美团的实践——用script存放html代码来减少DOM节点数. 玉伯在《 淘宝详情页的 BigRender 优化与存放大块 HTML 内容的最佳方式》中提到,. 与前面  textarea 存放 html 代码 一样,你也可以 用 script 来存放,目的都是减少 DOM 节点数.

【网络爬虫之JSOUP使用简介】入门:解析和遍历一个HTML文档

- - CSDN博客互联网推荐文章
jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容. 它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据. 从一个URL,文件或字符串中解析HTML;. 使用DOM或CSS选择器来查找、取出数据;. 可操作HTML元素、属性、 文本;.

jsoup select 选择器

- - 编程语言 - ITeye博客
采用CSS或类似jquery 选择器(selector)语法来处理HTML文档中的数据. 利用方法: Element.select(String selector)和 Elements.select(String selector). Jsoup的元素支持类似CSS或(jquery)的选择器语法的查找匹配的元素,可实现功能强大且鲁棒性好的查询.

DOM详解

- - CSDN博客推荐文章
 1.XML解析方式分为两种:dom和sax.   (1)dom:(Document Object Model, 即文档对象模型) 是 W3C 组织推荐的处理 XML 的一种方式.   (2) sax:(Simple API for XML) 不是官方标准,但它是 XML 社区事实上的标准,几乎所有的 XML 解析器都支持它.

javaScript DOM使用

- - CSDN博客互联网推荐文章
通过 HTML DOM,可访问 JavaScript HTML 文档的所有元素. 1 修改HTML元素内容. document.write(Date()); //在输入流中直接写 document.getElementById(id).innerHTML=new HTML. //改变已经有的元素内容 document.getElementById("image").src="landscape.jpg";.