亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python爬蟲基礎(chǔ)之XPath語法與lxml庫的用法詳解

 更新時間:2018年09月13日 10:44:19   作者:qq52o  
這篇文章主要給大家介紹了關(guān)于Python爬蟲基礎(chǔ)之XPath語法與lxml庫用法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

前言

本來打算寫的標(biāo)題是XPath語法,但是想了一下Python中的解析庫lxml,使用的是Xpath語法,同樣也是效率比較高的解析方法,所以就寫成了XPath語法和lxml庫的用法

XPath 即為 XML 路徑語言,它是一種用來確定 XML(標(biāo)準(zhǔn)通用標(biāo)記語言的子集)文檔中某部分位置的語言。

XPath 基于 XML 的樹狀結(jié)構(gòu),提供在數(shù)據(jù)結(jié)構(gòu)樹中找尋節(jié)點的能力。 XPath 同樣也支持HTML。

XPath 是一門小型的查詢語言。

python 中 lxml庫 使用的是 Xpath 語法,是效率比較高的解析方法。

下面話不多說了,來一起看看詳細(xì)的介紹吧

安裝

為什么要用這個庫呢,因為要寫爬蟲啊,利用lxml庫來解析 HTML 代碼,同時lxml也繼承了libxml2的特性自動修正HTML代碼,利用pip安裝即可

pip install lxml

XPath語法

XPath是一門在XML文檔中查找信息的語言,可以用于在XML文檔中通過元素和屬性進(jìn)行導(dǎo)航

舉個栗子 😎

我們可以使用XPath提取網(wǎng)站地圖中的所有鏈接,也就是說可以使用XPath去找我們HTML中的一些具體的東西

節(jié)點關(guān)系

在XPath中,有七種類型的節(jié)點:元素、屬性、文本、命名空間、處理指令、注釋以及文檔節(jié)點(或稱為根節(jié)點)

再舉個栗子 😎

<urlset>
<url>
<loc>https://qq52o.me</loc>
<lastmod>2018-04-28T19:00:42+00:00</lastmod>
<changefreq>daily</changefreq>
<priority>1.0</priority>
</url>
</urlset>

第一個:父(Parent)

每個元素以及屬性都有一個父

url元素是 loc、lastmod、changefreq以及 priority元素的父

第二個:子(Children)

元素節(jié)點可有零個、一個或多個子

loc、lastmod、changefreq以及 priority元素都是url元素的子

第三個:同胞(Sibling)

擁有相同的父的節(jié)點

loc、lastmod、changefreq以及 priority元素都是url元素的同胞

第四個:先輩(Ancestor)

某節(jié)點的父、父的父,等等

loc元素的先輩是 url元素和 urlset元素

第五個:后代(Descendant)

某個節(jié)點的子,子的子,等等

urlset的后代是url、loc、lastmod、changefreq以及 priority元素

如果你分不清楚,就按照子元素從上到下的去找元素節(jié)點

選取節(jié)點

XPath使用路徑表達(dá)式在 XML 文檔中選取節(jié)點,節(jié)點是通過沿著路徑或者 step 來選取的,也就是上面所說的按照子元素從上到下去找元素節(jié)點

這些是最有用的路徑表達(dá)式 💡

表達(dá)式 描述
nodename 選取此節(jié)點的所有子節(jié)點
/ 從根節(jié)點選取
// 從匹配選擇的當(dāng)前節(jié)點選擇文檔中的節(jié)點,而不考慮它們的位置
. 選取當(dāng)前節(jié)點
.. 選取當(dāng)前節(jié)點的父節(jié)點
@ 選取屬性

實例

路徑表達(dá)式 結(jié)果
urlset 選取urlset元素的所有子節(jié)點
/urlset 選取根元素 urlset
urlset/url 選取屬于urlset的子元素的所有url元素
//url 選取所有url子元素,而不管它們在文檔中的位置
urlset//url 選擇屬于urlset元素的后代的所有url元素,而不管它們位于urlset之下的什么位置
//@href 選取名為href的所有屬性

其他XPath語法請參考w3school

XPath實例測試

提取本站網(wǎng)站地圖中id屬性為content的的子元素h3的內(nèi)容以及子元素a的href屬性,F(xiàn)12去看代碼找這個屬性

div的id屬性,下面的子元素h3的內(nèi)容,直接利用 text 方法來獲取元素的內(nèi)容,然后輸出

這里的子元素層級關(guān)系必須按順序?qū)懞?,不然會報錯的

IndexError: list index out of range

這就說明你的XPath規(guī)則沒寫好,list是一個空的,沒有一個元素

XPath 是一個非常好用的解析方法,同時也是作為爬蟲學(xué)習(xí)的基礎(chǔ)

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • tkinter動態(tài)顯示時間的兩種實現(xiàn)方法

    tkinter動態(tài)顯示時間的兩種實現(xiàn)方法

    這篇文章主要介紹了tkinter動態(tài)顯示時間的兩種實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • 在django中使用apscheduler 執(zhí)行計劃任務(wù)的實現(xiàn)方法

    在django中使用apscheduler 執(zhí)行計劃任務(wù)的實現(xiàn)方法

    這篇文章主要介紹了如何在django中使用apscheduler 執(zhí)行計劃任務(wù),本文通過實例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-02-02
  • Python常用Web框架Django、Flask與Tornado介紹

    Python常用Web框架Django、Flask與Tornado介紹

    這篇文章介紹了Python常用Web框架Django、Flask與Tornado,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • Python使用list列表和tuple元組的方法

    Python使用list列表和tuple元組的方法

    這篇文章主要介紹了Python使用list列表和tuple元組的方法,list是一種有序的集合,可以隨時添加和刪除其中的元素,下文更多相關(guān)介紹需要的小伙伴可以參考一下
    2022-03-03
  • Python實例練習(xí)逆序輸出字符串講解

    Python實例練習(xí)逆序輸出字符串講解

    今天小編就為大家分享一篇關(guān)于Python字符串逆序輸出的實例講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2022-05-05
  • 淺談Python生成器generator之next和send的運行流程(詳解)

    淺談Python生成器generator之next和send的運行流程(詳解)

    下面小編就為大家?guī)硪黄獪\談Python生成器generator之next和send的運行流程(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • python?peewee操作sqlite鎖表的問題分析

    python?peewee操作sqlite鎖表的問題分析

    Peewee是一種簡單而小的ORM,在使用python?orm?框架?peewee?操作數(shù)據(jù)庫時時常會拋出以一個異常,下面我們就來分享一下具體的原因以及解決辦法吧
    2023-08-08
  • python批量修改文件名的三種方法實例

    python批量修改文件名的三種方法實例

    同事最近有個需求,需要批量修改文件的名稱,這篇文章主要給大家介紹了關(guān)于python批量修改文件名的三種方法,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-05-05
  • pycharm 更改創(chuàng)建文件默認(rèn)路徑的操作

    pycharm 更改創(chuàng)建文件默認(rèn)路徑的操作

    今天小編就為大家分享一篇pycharm 更改創(chuàng)建文件默認(rèn)路徑的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • Python接口自動化之request請求封裝源碼分析

    Python接口自動化之request請求封裝源碼分析

    這篇文章主要介紹了Python接口自動化之request請求封裝源碼分析,文章圍繞主題的相關(guān)資料展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,感興趣的小伙伴可以參考一下
    2022-06-06

最新評論