中文字幕第五页-中文字幕第页-中文字幕韩国-中文字幕最新-国产尤物二区三区在线观看-国产尤物福利视频一区二区

爬蟲網頁內容提取神器之xpath是什么-創新互聯

創新互聯www.cdcxhl.cn八線動態BGP香港云服務器提供商,新人活動買多久送多久,劃算不套路!

10余年的興安盟網站建設經驗,針對設計、前端、開發、售后、文案、推廣等六對一服務,響應快,48小時及時工作處理。網絡營銷推廣的優勢是能夠根據用戶設備顯示端的尺寸不同,自動調整興安盟建站的顯示方式,使網站能夠適用不同顯示終端,在瀏覽器中調整網站的寬度,無論在任何一種瀏覽器上瀏覽網站,都能展現優雅布局與設計,從而大程度地提升瀏覽體驗。創新互聯公司從事“興安盟網站設計”,“興安盟網站推廣”以來,每個客戶項目都認真落實執行。

這篇文章將為大家詳細講解有關爬蟲網頁內容提取神器之xpath是什么,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

XPath 是什么?

XPath的全稱是 XML Path Language,即XML 路徑語言,是一種在XML(HTML)文檔中查找信息的語言。它有4點特性:

XPath 使用路徑表達式在 XML 文檔中進行導航

XPath 包含一個標準函數庫

XPath 是 XSLT 中的主要元素

XPath 是一個 W3C 標準我們從網頁中提取數據,主要應用前兩點。

XPath 路徑表達式

使用XPath我們可以很容易定位到網頁中的節點,也就是找到我們關心的數據。這些路徑跟電腦目錄、網址的路徑很相似,通過/來表示路徑的深度。

XPath 標注函數庫

頭內建了100多個函數,當然我們提取數據用到的有限,也就不用記住全部100多個函數了。

Xpath 的節點(Node)

XPath中的核心就是節點(Node),定義了7種不同類型的節點: 元素(Element)、屬性(Attribute)、文本(Text)、命名空間(Namespace)、處理指令(processing-instruction)、注釋(Comment)和文檔節點(Document nodes)

這些節點組成一棵節點樹,樹的根節點被稱為文檔節點。

其中注釋就是html里面的注釋:<!-- 注釋內容 -->

而命名空間、處理指令和網頁數據提取基本沒關系,這里就不再詳述。

下面我們以一個簡單的html文檔為例,來解釋不同的節點及其關系。

<html>
<body>
    <div>ABC</div>
    <ul id="menu">
        <li>home</li>
        <li>python</li>
    </ul>
</body>
</html>

這段html中的節點有:

文檔節點: <html>

元素節點:<li class="item">python</li>

屬性節點: id="menu"

XPath 節點的關系

節點間的關系完全照搬人類傳宗接代的輩分關系,但只是直系關系,沒有叔叔、大伯之類的旁系關系。

還是以上面的html文檔為例來說明節點關系:

父(Parent)

每個元素節點(Element)及其屬性都有一個父節點。

比如,body的父是html,而body是div、ul 的父親。

子(Children)

每個元素節點可以有零個、一個或多個子。

比如,body有兩個子:div,ul,而ul也有兩個子:兩個li。

同輩(Sibling)

同輩有相同的父輩節點。

比如,div和ul是同輩。

先輩(Ancestor)

某節點的父輩及其以上輩分的節點。

比如,li的父輩有:ul、div、body、html

后代(Descendant)

某節點的子及其子孫節點。

比如,body的后代有:div、ul、li。

XPath節點的選取

選取節點,也就是通過路徑表達來實現。這是我們在網頁提取數據時的關鍵,要熟練掌握。

下表是比較有用的路徑表達式:

表達式說明
nodename選取當前節點的名為nodename的所有子節點。
/從根節點選取,在路徑中間時表示一級路徑
//從當前節點開始選擇文檔中的節點,可以是多級路徑
.從當前節點開始選取
..從父節點開始選取
@按屬性選取

接下來通過具體的示例來加深對路徑表達的理解:

路徑表達式解釋
/html/body/ul/li從根節點開始依照路徑選取li元素。返回多個。
//ul/li[1]還是選取li元素,但是路徑多級跳躍到ul/li。[1]表示只取第一個li。
//li[last()]還是選取li,但路徑更跳躍。[last()]表示取最后一個li元素。
//li[@class]選取根節點的名為li且有class屬性的所有后代。
//li[@class=”item”]選擇根節點的名為li且class屬性為item的所有后代。
//body/*/li選取body的名為li的孫子節點。*是通配符,表示任何節點。
//li[@*]選取所有帶屬性的li元素。
//body/div | //body/ul選取body的所有div和ul元素。
body/div相對路徑,選取當前節點的body元素的子元素div。絕對路徑以 / 開始。

XPath函數

Xpath的函數很多,涉及到錯誤、數值、字符串、時間等等,然而我們從網頁中提取數據的時候只會用到很少的一部分。其中最重要的就是字符串相關的函數,比如contains()函數。

contains(a, b)

如果字符串a包含字符串b,則返回true,否則返回false。

比如: contains(‘猿人學Python’, ‘Python’),返回true

那么它用在什么時候呢?我們知道,一個html標簽的class是可以有多個屬性值的,比如:

<div class="post-item text-red text-center">
    ...
</div>

這段html中div有三個class值,第一個表面它是一條發布的消息,后面兩個是對格式做了更多的設置。如果我們想提取網頁中所有發布的消息,只需要匹配到post-item 即可,這時候就可以用上contains了:

doc.xpath('//div[contains(@class, "post-item")]')

跟contains()類似的字符串匹配的函數還有:

starts-with(string1, string2) 判斷string1是否以string2開頭ends-with(string1, string2) 判斷string1是否以string2結尾matches(string, pattern) 通過正則表達式匹配

然而,在lxml的xpath中使用ends-with(), matches() 會報錯

In [232]: doc.xpath('//ul[ends-with(@id, "u")]')
---------------------------------------------------------------------------
XPathEvalError                            Traceback (most recent call last)
<ipython-input-232-79a4afc46a75> in <module>()
----> 1 doc.xpath('//ul[ends-with(@id, "u")]')

src/lxml/etree.pyx in lxml.etree._Element.xpath()

src/lxml/xpath.pxi in lxml.etree.XPathElementEvaluator.__call__()

src/lxml/xpath.pxi in lxml.etree._XPathEvaluatorBase._handle_result()

XPathEvalError: Unregistered function

lxml 竟然不支持ends-with(), matches()函數
到lxml官方網站去看看,原來它說了只支持 XPath 1.0:

lxml supports XPath 1.0, XSLT 1.0 and the EXSLT extensions through libxml2 and libxslt in a standards compliant way.

關于爬蟲網頁內容提取神器之xpath是什么就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

名稱欄目:爬蟲網頁內容提取神器之xpath是什么-創新互聯
新聞來源:http://m.2m8n56k.cn/article32/dspgsc.html

成都網站建設公司_創新互聯,為您提供標簽優化移動網站建設靜態網站ChatGPTApp開發品牌網站制作

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:[email protected]。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都做網站
主站蜘蛛池模板: 自拍 亚洲 欧美 | 一区视频在线播放 | 成年人免费看视频 | 久久美女精品国产精品亚洲 | 99国产高清久久久久久网站 | 国产中文字幕视频 | 成年人免费观看视频网站 | 视频精品一区二区 | 精品日韩一区二区三区 | 日本一级高清不卡视频在线 | 国产成人一区二区三区影院免费 | 免费小视频在线观看 | 国产一区二区三区四区在线 | 男人天堂网在线 | 看一级毛片国产一级毛片 | 日日摸天天摸狠狠摸视频 | 99爱免费观看视频在线 | 中文字幕在线观看一区二区 | 国产99视频精品草莓免视看 | 久久精品国产午夜伦班片 | 手机看片成人 | 亚洲人成网站观看在线播放 | 日本理论片免费高清影视在线观看 | 欧美黑人xxxxxxxxxx | 国产成人爱片免费观看视频 | 久草视屏| 伊人国产在线视频 | 一区二区三区亚洲视频 | 国产成人亚洲精品2020 | 国产亚洲精品成人一区看片 | 午夜精品尤物福利视频在线 | 国产高颜值露脸在线观看 | 亚洲国产成人精彩精品 | 国产高清第一页 | 性欧美videofree中文字幕 | 青草久草 | 国产欧美一区二区三区在线 | 久久九九国产精品怡红院 | 女人被男人躁得好爽免费文 | 毛片免费永久不卡视频观看 | 亚洲天堂视频在线观看 |