在android上,我们有时候需要获取网站上面的信息,所以就需要解析html文件啦,解析方法可以用Jsoup来完成,方法很简单,总的来说,这个类就之后如下几个很有用的方法:
1.加载指定网站的方法块,返回的是保存了这个网站的所有源代码的Document封装类
Document doc = null;
try {
doc = Jsoup.connect("http://news.csdn.net/").get();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
2.
Elements elements = doc.getElementsByClass("unit");
获取Elements的第一种方法,从整个Document获取指定class(也就是标签中的class属性)的标签块。
3.
doc.getElementsByTag("")
获取Elements的第二种方法,获取整个Document中指定的标签的标签块。
4.另外,通过Element对象也有上面所说的两种方法获取。
5.
elements.size()
获取Elements中所有元素的个数
6.
Element element = elements.get(i);
获取Elements中某个指定的元素,也就是Element
7.
element.getElementsByTag("a").attr("href")
获取指定标签中的指定属性里面的内容
8.
element..getElementsByTag("a").text()
获取指定标签中被标签包住的内容
下面代码演示了Jsoup的基本提取信息的功能:
需要提取的文章是:http://news.csdn.net/
网站中包含了如下想要提取的内容:
因为结构都是一样的,下面我贴出了一个内容:
<div class="unit">
<h1>
<a href="http://www.csdn.net/article/2015-12-15/2826474" target="_blank">如果你希望开源未来能更好,那么欢迎来帮助开源“进步”</a>
</h1>
</div>
提取代码如下:
import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class JsoupTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
Document doc = null;
try {
doc = Jsoup.connect("http://news.csdn.net/").get();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//获取网站中所有标签中class=unit的整个标签
Elements elements = doc.getElementsByClass("unit");
Element element = null;
for (int i = 0; i < elements.size(); i++) {
//遍历elements中的所有元素
element = elements.get(i);
String href1 = element.getElementsByTag("h1").get(0).getElementsByTag("a").attr("href");
System.out.println(href1);
String title = element.getElementsByTag("h1").get(0).getElementsByTag("a").text();
System.out.println(title);
}
}
}