日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

jsoup 使用教程

發布時間:2024/1/1 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jsoup 使用教程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

jsoup是一款Java的html解析工具,主要是對html和xml文件進行解析
在寫爬蟲的時候,當我們用HttpClient之類的框架,得到目標網頁的源碼后,需要從網頁源碼中取得我們想要的內容。就可以使用jsoup輕松獲取想要的內容。

jsoup的中文開發文檔

獲取jsoup的maven方式

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

URL獲取HTML來解析

// 方式一 Document document = Jsoup.connect("http://www.baidu.com/").get(); // 方式二 Document parse = Jsoup.parse(new URL("http://www.baidu.com/"), 1000 * 10);

其中Jsoup.connect(“xxx”)方法返回一個org.jsoup.Connection對象。
在Connection對象中,我們可以執行get和post來執行請求。但在執行請求之前,我們可以使用Connection對象來設置一些請求信息。比如:頭信息,cookie,請求等待時間,代理等等模擬瀏覽器行為。

Document document = Jsoup.connect("http://www.baidu.com/").data("wd","我").userAgent("Mozilla").cookie("auth","token").timeout(3000).post();

從文件中獲取html來解析

Document path = Jsoup.parse(new File("path"), "utf-8");

接從字符串中獲得html來解析

Document text = Jsoup.parse("");

通過Document獲取指定節點Element對象
通過方法來查找指定的節點Element

// 通過元素id值來獲取對應的節點 Element element = document.getElementById(String ?id);// 通過標簽名來獲取 Elements elements = document.getElementsByTag(String tagName);// 通過類名來獲取 Elements elements = document.getElementsByClass(String className);// 通過屬性名來獲取 Elements elements = document.getElementsByAttribute(String key);// 通過指定屬性名稱和屬性值來獲取節點對象 Elements elements = document.getElementsByAttributeValue(String key, String value);// 獲取所有節點元素 Elements elements = document.getAllElements();

通過類似于css或者jQuery的選擇器來查找元素

public Elements select(String cssQuery) {return Selector.select(cssQuery, this);}File input = new File("/tmp/input.html");Document doc = Jsoup.parse(input, "UTF-8", "http://example.com/");//帶有href屬性的a元素Elements links = doc.select("a[href]");//擴展名為.png的圖片Elements pngs = doc.select("img[src$=.png]");//class等于masthead的div標簽Element masthead = doc.select("div.masthead").first();//在h3元素之后的a元素?? ?Elements resultLinks = doc.select("h3.r > a");?

通過傳入一個類似于css或者jQuery的選擇器字符串,來查找指定元素
選擇器中更多語法可以在org.jsoup.select.Selector中查看到更多關于選擇器的語法

Selector中的語法簡介
tagName:通過標簽名查找元素,比如:a
ns|tag:通過標簽在命名空間查找元素,比如:可以用fb|name語法來查找<fb:name>元素
#id:通過ID來查找元素,比如#logo
.class:通過class名稱來查找元素 比如.master
[attribute]:利用屬性名稱來查找元素,如[href]
[^attribute]:利用屬性前綴來查找元素,比如:可以用[^data-]來查找帶有HTML中以data-開頭的屬性節點
[attr=value]:利用屬性值來查找元素,比如:[width=500]
[attr~=regx]:利用屬性值匹配正則表達式來查找元素,比如:img[src~=(?i).(png|jpe?g)]
*:這個符號將匹配所有元素

Selector選擇器組合使用
el#id:元素+ID,比如:div#logo
el.class:元素+class,比如:div.master
el[attr]:元素+attr,比如:a[href]? 任意組合,比如:a[href].heightlight
ancestor 空格 child:查找某個元素下的子元素,比如:可以用body p查找body下的所有p標簽
parent > child:查找某個父元素下的直接元素,比如:可以用div.content > p查找class是content的div中所有的p標簽
siblingA + siblingB:查找標簽A下的第一個B標簽,比如:div.head + div
siblingA ~ siblingB:查找siblingA同級第一個B標簽,比如:h1 ~ p
el,el,el:多個選擇器組合,查找匹配任一選擇器的唯一元素,例如:div.master,div.logo

Selector偽類選擇器
tag:lt(n):查找所有小于給定索引值的元素,從0開始計數,比如tr:lt(2)
tag:gt(n):查找所有大于給定索引值的元素,從0開始計數,比如tr:gt(2)
tag:eq(n):查找給定索引值的元素,比如tr:eq(2)
tag:has(seletor):查找匹配選擇器包含元素的元素,比如:div:has§表示哪些div包含p元素
tag:not(seletor):查找于選擇器不匹配的元素,比如:div:not(.logo)表示不包含class=”logo“元素的所有div列表
tag:contains(text):查找包含給定文本元素,搜索不區分大小寫,比如:p:contains(jsoup)
tag:containsOwn(text):查找直接包含指定文本的元素
tag:matches(regex):查找自身包含文本匹配指定的元素

通過上面的選擇器,我們可以取得一個Elements對象中,它繼承了ArrayList對象,里面放的全是Element對象。使用Element獲得想要的內容

使用Element獲得想要的內容

// 這個方法用來獲取一個元素中的文本 element.text()// 這個方法用來獲取一個元素中的html內容 element.html()或Node.outerHtml()// 這個方法來取得一個元素的一個屬性值 Node.attr(String key)

public class JsoupMain {public static void main(String[] args) {try {Document document = Jsoup.connect("http://www.baidu.com/").data("wd","我").userAgent("Mozilla").cookie("auth","token").timeout(3000).post();Elements elements = document.select("a");elements.forEach(element -> {System.out.println(element.text());});} catch (IOException e) {e.printStackTrace();}} }

原文鏈接:https://blog.csdn.net/justLym/article/details/105715516

總結

以上是生活随笔為你收集整理的jsoup 使用教程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。