爬蟲筆記 十三 lxml庫的使用

2022-08-26 07:06:09 字數 2068 閱讀 9045

html示例**:

text = '''

'''

在 xpath 語境中,xml 文件被視作節點樹,節點樹的根節點也被稱作文件節點。xpath 將節點樹中的節點(node)分為七類:元素(element),屬性(attribute),文字(text),命名空間(namespace),處理指令(processing-instruction),注釋(comment)和文件節點(document nodes)。

父(parent):每個元素都肯定有乙個父節點,最頂層的元素父親是根節點。同理每個屬性必然有乙個父,它們的父是元素。上文html 文件中,根 div 是元素 ul 的父節點,ul是元素 li的父節點,lie是元素a的父節點。

子(children):元素可以有零或多個子。上文 html文件中,ul是 div的子節點。

同胞(sibling):父節點相同的節點之間互為同胞,也稱彼此的兄弟節點。

先輩(ancestor):某節點的父節點、父的父,以此類推一直追溯至根節點之間所有節點。上文 html文件中,div、ul是li的先輩。

後代(descendant):某節點的子節點、子的子,以此類推至最後乙個子節點之間所有節點。上文 html文件中,ul、li是div的後代。

# 匯入 lxml etree 庫

from lxml import etree

# 獲取 html 內容 元素

htmlemt = etree.html(text)

如果原始碼儲存在檔案中,可用parse 方法來讀取檔案。

from lxml import etree

# text.xml 是乙個 xml 檔案,並在當前檔案同目錄下

htmlemt = etree.parse('text.xml')

#lxml 有自動修正 html **的功能

預判(predicates):預判是用來查詢某個特定的節點或者符合某種條件的節點,預判表示式位於方括號中。

萬用字元:

或條件選取:使用 「|」 運算子,你可以選取符合「或」條件的若干路徑。

附錄:xpath返回的不一定就是唯一的節點,而是符合條件的所有節點。比如在html文件裡使用「/html/head/scrpt」就會把head裡的所有script節點都取出來。為了縮小定位範圍,往往還需要增加過濾條件。過濾的方法就是用「[」「]」把過濾條件加上。比如在html文件裡使用「/html/body/div[@id='main']」,即可取出body裡id為main的div節點。其中@id表示屬性id,類似的還可以使用如@name, @value, @href, @src, @class….而函式text()的意思則是取得節點包含的文字。比如:helloworld

< /div>中,用」div[text()='hello']「即可取得這個div,而world則是p的text()。

函式position()的意思是取得節點的位置。比如「li[position()=2]」表示取得第二個li節點,它也可以被省略為「li[2]」。不過要注意的是數字定位和過濾 條件的順序。比如「ul/li[5][@name='hello']」表示取ul下第五項li,並且其name必須是hello,否則返回空。而如果用 「ul/li[@name='hello'][5]」的意思就不同,它表示尋找ul下第五個name為」hello「的li節點。

此外,「*」可以代替所有的節點名,比如用」/html/body/*/span」可以取出body下第二級的所有span,而不管它上一級是div還是p或是其它什麼東東。

python的lxml庫簡介 lxml庫

lxml 是 乙個html xml的解析器,主要的功能是如何解析和提取 html xml 資料。lxml和正則一樣,也是用 c 實現的,是一款高效能的 python html xml 解析器,我們可以利用之前學習的xpath語法,來快速的定位特定元素以及節點資訊。需要安裝c語言庫,可使用 pip 安...

python爬蟲 三大庫之lxml庫

lxml庫是基於libxml2的xml解析庫的python庫,該模組使用c語言編寫,解析速度比beautifulsoup更快。lxml庫使用xpath語法解析定位網頁資料。windows系統下,在cmd命令提示框中,輸入如下命令 pip install lxml2.1 修正html lxml為xml...

Python爬蟲Xpath和lxml類庫系列之九

xpath xml path language 是一門在 xml 文件中查詢資訊的語言,可用來在 xml 文件中對元素和屬性進行遍歷。謂語用來查詢某個特定的節點或者包含某個指定的值的節點,被嵌在方括號中。xpath 萬用字元可用來選取未知的 xml 元素。通過在路徑表示式中使用 運算子,您可以選取若...