Python爬蟲的第五天 XPath

2021-09-27 03:24:23 字數 2703 閱讀 5556

xpath即為xml路徑語言(xml path language),它是一種用來確定xml文件中某部分位置的計算機語言。

選取節點:

xpath使用路徑表示式來選取xml文件中的節點或者節點集。

一些語法

表示式描述示例結果/

選取此節點的所有子節點

/html

選取html下的所有子節點(注意:只能是子節點,不能是孫節點。且必須從根節點開始)

//從全域性節點中選擇節點,隨便哪個位置

//div

從全域性節點中找到所有的div節點

@選取某個節點的屬性

//div[@id]

選擇所有擁有id屬性的div節點

.選取當前節點

//head/meta[./@class]

當前meta節點的所有class屬性

. .選取當前節點的父節點

//meta[./@class]

當前meta節點的父節點的所有class屬性

謂語:

謂語用來查詢某個特定的節點或者包含某個指定的值的節點,被嵌在方括號中。

路徑表示式

描述//head/meta[1]

選取head下的第乙個meta子元素

//head/meta[last()]

選取head下的倒數第二個meta元素

//head/meta[position() < 3]

選取head下前兩個meta元素

//head/meta[@class]

選取擁有class屬性的meta元素

//book[@price=10]

選取所有屬性price=10的bookyuansu

萬用字元

萬用字元*@*

node()

描述匹配任意位元組

匹配節點中的任何屬性

匹配任何型別的節點

示例//head/*

//head/@*

結果選取head下的所有子節點

選取所有帶有屬性的head元素

選取多個路徑:

通過在路徑表示式中使用「|」運算子,可以選取若干個路徑。

//head/meta |

//body//li

#選取所有head元素下的meta元素以及body元素下的所有li元素

運算子

參考**

不明白可自行去維基百科搜尋

要注意的知識點

1,/ 和 // 的區別:/ 代表只獲取直接子節點。 // 獲取子孫節點。

2,contains:有的時候某個屬性中包含了多個值,那麼就可以使用contains函式。示例**如下:

//div[contains(@class,'job_detail')]
3,謂詞中的下標是從1開始的,不是從0開始的。

lxml是乙個html/xml的解析器,主要的功能是如何解析和提取 html/xml資料。

基本使用

我們可以利用他來解析html**,並且在解析html**的時候,如果html**不規範,他會自動的進行補全。示例**如下:

from lxml import etree

test =

""""""

htmlelement = etree.html(test)

print

(etree.tostring(htmlelement,encoding=

'utf-8'

).decode(

'utf-8'

))

利用etree.parse()方法解析html檔案。示例**如下:

from lxml import etree

#讀取renren.html

html = etree.parse(

'renren.html'

)print

(etree.tostring(html,encoding=

'utf-8'

).decode(

'utf-8'

))

這個函式預設使用的是xml解析器,所以如果碰到一些不規範的html**的時候就會解析錯誤,這個時候就要自己建立html解析器。

from lxml import etree

parse = etree.htmlparser(encoding=

'utf-8'

)htmlelement = etree.parse(

"lagou.html"

,parser=parse)

print

(etree.tostring(htmlelement,encoding=

'utf-8'

).decode(

'utf-8'

))

由於某些原因就先到這裡,後面繼續。

學習爬蟲第五天 xpath

xpath是 在html xml 檔中查詢資訊的語 可 來在html xml 檔中對元素和屬性進 遍歷 文件 xpath介紹 xml html 概念 每個xml的標籤我們都稱之為節點。示例 hello world juran 2019 定義 xpath使 路徑表示式來選取xml 檔中的接待或者節點集...

Python學習第五天

1 關於print,使用print方法列印多個表示式也是可行的 print age 12 age 12 2 別名,如果需要引用的方法名出現重複時可以使用別名 from math import sqrt as foobar 3 多個賦值操作可以同時進行 x,y,z 1,2,3 print x,y,z ...

第五天學習python

這其實也不是一天學習的,而是週末和周一一起的。週末學習了如何建立自己的module,記憶如何使用dir 函式。周一初步學習第九章。資料結構。python中主要有三種內建資料結構 列表,元組,字典。list是處理一組有序專案的資料結構,在每個專案中用逗號隔開。列表中的專案包括在方括號中,乙個列表建立之...