国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Xpath、Jsoup、Xsoup(我的Java爬蟲之二)

Big_fat_cat / 858人閱讀

摘要:它最主要的目的是為了在或文檔節點樹中定位節點所設計。選取所有擁有名為的屬性的元素。選取元素的所有元素,且其中的元素的值須大于。實例路徑表達式結果選取元素的所有子元素。如在加載文件的時候發生錯誤,將拋出,應作適當處理。

從Xpath說起 什么是Xpath

XPath是W3C的一個標準。它最主要的目的是為了在XML1.0或XML1.1文檔節點樹中定位節點所設計。
XPath是一種表達式語言,它的返回值可能是節點,節點集合,原子值,以及節點和原子值的混合等。

語法 選取結點
表達式 描述
/ 從根節點選取
// 從匹配選擇的當前節點選擇文檔中的節點,而不考慮它們的位置。
. 選取當前結點
.. 選取當前節點的父結點
@ 選取屬性
實例
路徑表達式 結果
bookstore 選取 bookstore 元素的所有子節點。
/bookstore 選取根元素 bookstore。注釋:假如路徑起始于正斜杠( / ),則此路徑始終代表到某元素的絕對路徑!
bookstore/book 選取屬于 bookstore 的子元素的所有 book 元素。
//book 選取所有 book 子元素,而不管它們在文檔中的位置。
bookstore//book 選擇屬于 bookstore 元素的后代的所有 book 元素,而不管它們位于 bookstore 之下的什么位置。
//@lang 選取名為 lang 的所有屬性。
謂語
表達式 描述
/bookstore/book[1] 選取屬于 bookstore 子元素的第一個 book 元素。
/bookstore/book[last()] 選取屬于 bookstore 子元素的最后一個 book 元素。
/bookstore/book[last()-1] 選取屬于 bookstore 子元素的倒數第二個 book 元素。
/bookstore/book[position()<3] 選取最前面的兩個屬于 bookstore 元素的子元素的 book 元素。
//title[@lang] 選取所有擁有名為 lang 的屬性的 title 元素。
//title[@lang="eng"] 選取所有 title 元素,且這些元素擁有值為 eng 的 lang 屬性。
/bookstore/book[price>35.00] 選取 bookstore 元素的所有 book 元素,且其中的 price 元素的值須大于 35.00。
/bookstore/book[price>35.00]/title 選取 bookstore 元素中的 book 元素的所有 title 元素,且其中的 price 元素的值須大于 35.00。
選取未知節點
通配符 描述
* 匹配任何元素節點。
@* 匹配任何屬性節點。
node() 匹配任何類型的節點。
實例
路徑表達式 結果
/bookstore/* 選取 bookstore 元素的所有子元素。
//* 選取文檔中的所有元素。
//title[@*] 選取所有帶有屬性的 title 元素。
參考:http://www.w3school.com.cn/xp...

暫時整理這些,如有需要,可去w3school查閱

Jsoup

Jsoup 是一款 Java 的 HTML 解析器,可直接解析某個 URL 地址、HTML 文本內容。

從字符串中解析
String html = "First parse

Parsed HTML into a doc.

"; Document doc = Jsoup.parse(html);
從URL加載一個Document
Document doc = Jsoup.connect("https://www.qq.com").get();
String title = doc.title();

值得一提的是,connect()方法可以返回一個新的Connection對象,Connection接口還提供一個方法鏈來解決特殊請求,具體如下:

Document doc = Jsoup.connect("http://example.com")
  .data("query", "Java")
  .userAgent("Mozilla")
  .cookie("auth", "token")
  .timeout(3000)
  .post();

從URL加載dom還可以

Document dom = Jsoup.parse(new URL("https://www.qq.com"), 10000);
從一個文件中加載一個dom
File input = new File("/tmp/input.html");
Document doc = Jsoup.parse(input, "UTF-8", "http://example.com/");

parse(File in, String charsetName, String baseUri) 這個方法用來加載和解析一個HTML文件。如在加載文件的時候發生錯誤,將拋出IOException,應作適當處理。
baseUri 參數用于解決文件中URLs是相對路徑的問題。如果不需要可以傳入一個空的字符串。

遍歷document的api

查找元素
getElementById(String id)
getElementsByTag(String tag)
getElementsByClass(String className)
getElementsByAttribute(String key) (and related methods)
Element siblings: siblingElements(), firstElementSibling(), lastElementSibling(); nextElementSibling(), previousElementSibling()
Graph: parent(), children(), child(int index)
元素數據
attr(String key)獲取屬性attr(String key, String value)設置屬性
attributes()獲取所有屬性
id(), className() and classNames()
text()獲取文本內容text(String value) 設置文本內容
html()獲取元素內HTMLhtml(String value)設置元素內的HTML內容
outerHtml()獲取元素外HTML內容
data()獲取數據內容(例如:script和style標簽)
tag() and tagName()
操作HTML和文本
append(String html), prepend(String html)
appendText(String text), prependText(String text)
appendElement(String tagName), prependElement(String tagName)
html(String value)

通過選擇器解析

Selector選擇器概述

tagname: 通過標簽查找元素,比如:a
ns|tag: 通過標簽在命名空間查找元素,比如:可以用 fb|name 語法來查找  元素
#id: 通過ID查找元素,比如:#logo
.class: 通過class名稱查找元素,比如:.masthead
[attribute]: 利用屬性查找元素,比如:[href]
[^attr]: 利用屬性名前綴來查找元素,比如:可以用[^data-] 來查找帶有HTML5 Dataset屬性的元素
[attr=value]: 利用屬性值來查找元素,比如:[width=500]
[attr^=value], [attr$=value], [attr*=value]: 利用匹配屬性值開頭、結尾或包含屬性值來查找元素,比如:[href*=/path/]
[attr~=regex]: 利用屬性值匹配正則表達式來查找元素,比如: img[src~=(?i).(png|jpe?g)]
*: 這個符號將匹配所有元素
Selector選擇器組合使用
el#id: 元素+ID,比如: div#logo
el.class: 元素+class,比如: div.masthead
el[attr]: 元素+class,比如: a[href]
任意組合,比如:a[href].highlight
ancestor child: 查找某個元素下子元素,比如:可以用.body p 查找在"body"元素下的所有 p元素
parent > child: 查找某個父元素下的直接子元素,比如:可以用div.content > p 查找 p 元素,也可以用body > * 查找body標簽下所有直接子元素
siblingA + siblingB: 查找在A元素之前第一個同級元素B,比如:div.head + div
siblingA ~ siblingX: 查找A元素之前的同級X元素,比如:h1 ~ p
el, el, el:多個選擇器組合,查找匹配任一選擇器的唯一元素,例如:div.masthead, div.logo
偽選擇器selectors
:lt(n): 查找哪些元素的同級索引值(它的位置在DOM樹中是相對于它的父節點)小于n,比如:td:lt(3) 表示小于三列的元素
:gt(n):查找哪些元素的同級索引值大于n,比如: div p:gt(2)表示哪些div中有包含2個以上的p元素
:eq(n): 查找哪些元素的同級索引值與n相等,比如:form input:eq(1)表示包含一個input標簽的Form元素
:has(seletor): 查找匹配選擇器包含元素的元素,比如:div:has(p)表示哪些div包含了p元素
:not(selector): 查找與選擇器不匹配的元素,比如: div:not(.logo) 表示不包含 class=logo 元素的所有 div 列表
:contains(text): 查找包含給定文本的元素,搜索不區分大不寫,比如: p:contains(jsoup)
:containsOwn(text): 查找直接包含給定文本的元素
:matches(regex): 查找哪些元素的文本匹配指定的正則表達式,比如:div:matches((?i)login)
:matchesOwn(regex): 查找自身包含文本匹配指定正則表達式的元素
注意:上述偽選擇器索引是從0開始的,也就是說第一個元素索引值為0,第二個元素index為1等
可以查看Selector API參考來了解更詳細的內容
修改數據 (暫時懶得復制粘貼了) Xsoup 即將到來

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/69456.html

相關文章

  • 爬蟲框架WebMagic源碼分析之Selector

    摘要:主要用于選擇器抽象類,實現類前面說的兩個接口,主要用于選擇器繼承。多個選擇的情形,每個選擇器各自獨立選擇,將所有結果合并。抽象類,定義了一些模板方法。這部分源碼就不做分析了。這里需要提到的一點是返回的不支持選擇,返回的對象支持選擇。 1、Selector部分:接口:Selector:定義了根據字符串選擇單個元素和選擇多個元素的方法。ElementSelector:定義了根據jsoup ...

    dongxiawu 評論0 收藏0
  • webmagic小試牛刀

    摘要:序是里頭比較優秀的一個爬蟲框架使用作為解析工具,并基于其開發了解析的工具。默認使用了作為下載工具。這里展示一下入門級使用。 序 webmagic是java里頭比較優秀的一個爬蟲框架: 使用Jsoup作為HTML解析工具,并基于其開發了解析XPath的工具Xsoup。 默認使用了Apache HttpClient作為下載工具。 這里展示一下入門級使用。 maven ...

    stefan 評論0 收藏0
  • Web開發 - Selenium自動化&爬蟲

    摘要:自動化爬取淘寶中的訂單這是淘寶會員登錄頁。但淘寶的反爬機制很難算出,很多都是通過的計算,所以不得不學習源碼,反到最后看的頭痛。。。 自動化爬取淘寶中的訂單 這是 淘寶會員登錄頁 。因為之前做的爬蟲都是通過框架或從登錄頁取得Cookie,再注入進去實現登陸過程的。但淘寶的反爬機制很難算出Cookie,很多Cookie都是通過JS的計算,所以不得不學習源碼,反到最后看的頭痛。。。 第一次嘗...

    Chao 評論0 收藏0
  • XML基礎知識歸納

    摘要:它提供了一套非常省力的,可通過,以及類似于的操作方法來取出和操作數據。 XML:可擴展標記型語言 隨著json等一些技術的普及,似乎xml的路子越來越窄,雖然xml的一些功能被其他的一些技術代替,但是學習xml還是非常有必要,如果用xml存儲一些大量數據,還是有一定優勢的,就算你不管這些,但是現有的很多框架以及技術的配置文件都存在于xml中,最起碼你得對它的結構以及一些基本用法有一定了...

    Warren 評論0 收藏0

發表評論

0條評論

Big_fat_cat

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<