前两天的工作是解析亚马逊的页面,获取需要的数据,所以呢,我就选择了jsoup,选择的版本是1.9.2,这个大家可以去joup官网()maven仓库那下载就是了,我就不多说了。
首先,科普下什么是jsoup(我也是用了才知道的,嘿嘿):
jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。
接下来,就参照官方API和自己的代码讲解一下jsoup的用法。
接下来,就参照官方API和自己的代码讲解一下jsoup的用法。、
1、连接一个URL,并返回一个Document对象
//Creates a new Connection to a URL. Use to fetch and parse a HTML page.
//创建一个新的连接到指定URL。用于获取和解析这个HTML页面
Document doc = Jsoup.connect("https://jsoup.org/").get();//获取Jsoup官网,并返回一个Document对象
2、也可以把一个HTML字符串转为document对象,不管你这个html是否完整,它都可以解析包装成一个document对象
//把一个字符串解析成document对象
String html = "<html><head><title>First parse</title></head>"
+ "<body><p>Parsed HTML into a doc.</p></body></html>";
Document document = Jsoup.parse(html);
3、解析body碎片
@Test
public void test02(){
//解析一个不完整的HTML页面
String html = "<div><p>Lorem ipsum.</p>";
//该方法会自动补全标签,并为其添加html和body标签,使其转化为一个Document对象
Document doc = Jsoup.parseBodyFragment(html);
//获取doc的body部分
Element body = doc.body();
}
4、从一个URL加载一个文档对象
//根据CSDN的URL地址加载一个Document对象
Document doc = Jsoup.connect("http://www.csdn.net/").get();
//获取title内容
String title = doc.title();
<pre style="margin-top: 0px; margin-bottom: 10px; padding: 10px; font-family: Consolas, monospace; overflow: auto; border-radius: 5px; color: rgb(25, 41, 67); background-color: rgb(231, 235, 242);"><span style="font-size: 15px; line-height: 15px;"></span>
Document doc = Jsoup.connect("http://example.com")<span style="font-family: arial, 宋体, sans-serif;">//指定连接的参数获取document
.data("query", "Java")
.userAgent("Mozilla")
.cookie("auth", "token")
.timeout(3000)
.post();
5、从文件加载一个文档对象
@Test
public void test01() throws IOException{
//Jsoup.parse(File in, String charsetName, String baseUri)
File input = new File("C:\\Users\\Administrator\\Desktop\\hello.txt");
//baseUri 参数用于解决文件中URLs是相对路径的问题。如果不需要可以传入一个空的字符串。
Document doc = Jsoup.parse(input, "UTF-8", "http://blog.csdn.net/");
System.out.println(doc);
}
6、使用DOM方法遍历一个对象
@Test
public void test02() throws IOException{
File input = new File("C:\\Users\\Administrator\\Desktop\\hello.txt");
Document doc = Jsoup.parse(input, "UTF-8", "http://example.com/");
//获取ID为content的元素
Element content = doc.getElementById("content");
//获取在conten里的标签为a的元素
Elements links = content.getElementsByTag("a");
for (Element link : links) {
//获取a标签中属性为href的值
String linkHref = link.attr("href");
//获取a标签中的文本
String linkText = link.text();
}
}
说明
Elements这个对象提供了一系列类似于DOM的方法来查找元素,抽取并处理其中的数据。具体如下:
查找元素getElementById(String id)
getElementsByTag(String tag)
getElementsByClass(String className)
getElementsByAttribute(String key)
(and related methods)- 兄弟元素:
siblingElements()
,firstElementSibling()
,lastElementSibling()
;nextElementSibling()
,previousElementSibling()
- Graph:
parent()
,children()
,child(int index)
元素数据
attr(String key)
获取属性attr(String key, String value)
设置属性attributes()
获取所有属性id()
,