網路爬蟲 Jsoup的一些獲取資料方法

2021-08-16 01:59:51 字數 3193 閱讀 7863

// 

根據id

獲得節點

element elementdiv = doc.getelementbyid("shop-all-list");

//根據

標籤名獲得節點

elements elementsul = elementdiv.getelementsbytag("ul");

//獲取

elementsul

中第乙個

的標籤節點

elements elements = elementsul.first().getelementsbytag("li");

elements elements1 = element.children();

string targeturl = elements1.get(0).getelementsbytag("a").attr("href");

string img = elements1.get(0).getelementsbytag("img").first().attr("data-src");

//判斷字串中是否包含

//獲得字串中

第一次出現位置

//字串擷取

img = img.substring(0, a + 4);

jsoup解析有很多種方法能得到同樣的結構,就看你想用哪種思路。

有用id定位的,有用tagname獲取的有用class 獲取的。

常用的方法如下:

jsoup提供類似js獲取html元素:

getelementbyid(stringid)                          用id獲得元素

getelementsbytag(stringtag)                            用標籤獲得元素

getelementsbyclass(stringclassname) 用class獲得元素

getelementsbyattribute(stringkey)        用屬性獲得元素

同時還提供下面的方法提供獲取兄弟節點:siblingelements(),firstelementsibling(), lastelementsibling();nextelementsibling(),previouselementsibling()

獲得與設定元素的資料:

attr(string key)         獲得元素的資料 attr(string key, string value) 設定元素資料

attributes()                獲得所以屬性

id(),classname(),classnames()獲得id class得值

text()                           獲得文字值

text(string value)     設定文字值

html()                          獲取html

html(string value)    設定html

outerhtml()               獲得內部html

data()                          獲得資料內容

tag()                                      獲得tag 和 tagname() 獲得tagname

操作html元素:

html(string value)

jsoup還提供了類似於jquery方式的選擇器

採用選擇器來檢索資料

tagname  使用標籤名來定位,例如 a

ns|tag      使用命名空間的標籤定位,例如 fb:name 來查詢 元素

#id             使用元素 id 定位,例如 #logo

.class        使用元素的 class 屬性定位,例如 .head

*                定位所有元素

[attribute]        使用元素的屬性進行定位,例如 [href] 表示檢索具有 href 屬性的所有元素

[^attr]                使用元素的屬性名字首進行定位,例如 [^data-] 用來查詢 html5 的 dataset 屬性

[attr=value]      使用屬性值進行定位,例如 [width=500] 定位所有 width 屬性值為 500 的元素

[attr^=value],[attr$=value],[attr*=value] 這三個語法分別代表,屬性以value 開頭、結尾以及包含

[attr~=regex]   使用正規表示式進行屬性值的過濾,例如 img[src~=(?i)\.(png|jpe?g)]

以上是最基本的選擇器語法,這些語法也可以組合起來使用

組合用法:

el#id                   定位id值某個元素,例如 a#logo->

el.class     定位 class 為指定值的元素,例如div.head -> ***x

el[attr]     定位所有定義了某屬性的元素,例如 a[href]

以上三個任意組合,例如 a[href]#logo 、a[name].outerlink

除了一些基本的語法以及這些語法進行組合外,jsoup 還支援使用表示式進行元素過濾選擇

:lt(n)    例如 td:lt(3) 表示小於三列

:gt(n)    div p:gt(2) 表示 div 中包含 2 個以上的 p

:eq(n)    form input:eq(1) 表示只包含乙個 input 的表單

:has(seletor)     div:has(p) 表示包含了 p 元素的 div

:not(selector)     div:not(.logo) 表示不包含class=logo 元素的所有 div 列表

:contains(text)     包含某文字的元素,不區分大小寫,例如p:contains(oschina)

:containsown(text)     文字資訊完全等於指定條件的過濾

:matches(regex)     使用正規表示式進行文字過濾:div:matches((?i)login)

:matchesown(regex)     使用正規表示式找到自身的文字

關於Jsoup的一些認識

jsoup是解析html的工具,使用時要匯入jsoup.jar包 獲取 的html檔案 獲取jsoup連線 connection con jsoup.connect classno 獲取document物件 document doc con.get 獲取標籤中的html內容,例如sdskd中標籤的內...

jsoup的一些好用的方法

1 empty的方法清空某個元素的文字內容,與jquery的empty的方法有很多的相同點 2。hastext的方法判斷某個元素中是否有文字內容。3。jsoup選擇器與jquery的選擇器幾乎一樣的。1 div div 表示div元素下的後代的所有div元素。2 div div 表示div元素的所有...

網路爬蟲(二) Jsoup的使用

這裡的getelementsbytags得到的是乙個類似陣列,所以需要取第乙個值,即first,text的內容得到的是標籤內的文字內容,這裡可能會有乙個疑問,為什麼jsoup都可以直接得到網頁的內容了,還需要httpclients closeablehttpclient 因為在實際開發中,要用到多執...