python中xpath的使用

2021-08-16 21:37:02 字數 3539 閱讀 9899

xpath在python的爬蟲學習中,起著舉足輕重的地位,對比正規表示式 re兩者可以完成同樣的工作,實現的功能也差不多,但xpath明顯比re具有優勢,在網頁分析上使re退居二線。

xpath介紹:

是什麼? 全稱為xml path language一種小型的查詢語言

說道xpath是門語言,不得不說它所具備的優點: 

1) 可在xml中查詢資訊 

2) 支援html的查詢 

3) 通過元素和屬性進行導航

python開發使用xpath條件:

由於xpath屬於lxml庫模組,所以首先要安裝庫lxml,具體的安裝過程可以檢視部落格,包括easy_install 和 pip 的安裝方法。

xpath的簡單呼叫方法:

from lxml import etree

selector=etree.html(原始碼) #將原始碼轉化為能被xpath匹配的格式

selector.xpath(表示式) #返回為一列表

xpath的使用方法:

首先講一下xpath的基本語法知識: 

四種標籤的使用方法 

1)//雙斜槓 定位根節點,會對全文進行掃瞄,在文件中選取所有符合條件的內容,以列表的形式返回。 

2)/單斜槓 尋找當前標籤路徑的下一層路徑標籤或者對當前路標籤內容進行操作 

3)/text()獲取當前路徑下的文字內容 

4)/@***x提取當前路徑下標籤的屬性值 

5)|可選符 使用|可選取若干個路徑 如//p | //div 即在當前路徑下選取所有符合條件的p標籤和div標籤。 

6).點 用來選取當前節點 

7) .. 雙點 選取當前節點的父節點 

另外還有starts-with(@屬性名稱,屬性字元相同部分),string(.)兩種重要的特殊方法後面將重點講。

# -*- coding: utf-8 -*-

from lxml import etree

html="""

581csdn1

"""selector = etree.html(html)#獲取

id="ul"

的內容中

li的內容

content = selector.xpath('//div[@id="content"]/ul[@id="ul"]/li/text()') #xpath

以列表的形式返回

for item in content:

print(item)#獲取

a標籤中

href

的值 方法

1content = selector.xpath('//a/@href')

for item in content:

print(item)#獲取

a標籤的

title

屬性的值 方法

2content = selector.xpath('/html/body/div/a/@title')

for item in content:

print(item)#獲取

a標籤的元素的值

content = selector.xpath('//a/text()')

for item in content:

print(item)

介紹xpath的特殊用法:

1)starts-with解決標籤屬性值以相同字串開頭的情況

舉例說明

from lxml import etree

html="""

aaabac

"""selector=etree.html(html)

content=selector.xpath('//div[starts-with(@id,"a")]/text()') #這裡使用starts-with方法提取div的id標籤屬性值開頭為a的div標籤 for each in content: print each #輸出結果為: aa ab ac

2)string(.)標籤套標籤

html="""

left

right

east

west

"""#下面是沒有用string方法的輸出

sel=etree.html(html)

con=sel.xpath('//div[@id="a"]/text()')

for i in con: print i #輸出內容為left west data=sel.xpath('//div[@id="a"]')[0] info=data.xpath('string(.)') content=info.replace('\n','').replace(' ','') for i in content: print i #輸出為 全部內容

xpath提供的幾個特殊的方法:

xpath中需要取的標籤如果沒有屬性,可以使用text(),posision()來識別標籤。

舉兩個簡單的例子:

from lxml import etree

html="""

hello

hhehe

"""sel=etree.html(html)

con=sel.xpath('//div[text()="hello"]/p/text()')

print con[0] #h

這裡使用text()的方法來判別是哪個div標籤

from lxml import etree

html="""

hello

hjihehe

"""sel=etree.html(html)

con=sel.xpath('//div[text()="hello"]/p[posision()=2]/text()')

print con[0] #j

另外,在xpath中可以使用多重過濾方法尋找標籤,例如ul[3][@id=」a」] 這裡使用來尋找第三個ul標籤 並且它的id屬性值為a

獲取xpath的方式有兩種:

1) 使用以上等等的方法通過觀察找規律的方式來獲取xpath 

2) 使用chrome瀏覽器來獲取 在網頁中右擊->選擇審查元素(或者使用f12開啟) 就可以在elements中檢視網頁的html標籤了,找到你想要獲取xpath的標籤,右擊->copy xpath 就已經將xpath路徑複製到了剪下板。

python中的xpath的使用

直接貼出最常用的路徑表示式 表示式描述 nodename 選取此節點的所有子節點。從根節點擊取。從匹配選擇的當前節點擊擇文件中的節點,而不考慮它們的位置。選取當前節點。選取當前節點的父節點。選取屬性。xpath span class hhh 選取屬性為hhh的span節點 xpath string ...

python 爬蟲(XPATH使用)

xpath xml path language 是一門在xml文件中查詢資訊的語言,可用來在xml文件中對元素和屬性進行遍歷。w3school官方文件 pip install lxml 如果出現網路延遲,可使用清華源進行安裝匯入兩種匯入方式 第一種 直接匯入from lxml import etre...

Python 爬蟲 XPATH使用總結

xpath的常用規則 nodename 選取此節點的所有子節點 從當前節點擊取直接子節點 從當前節點擊取子孫節點 選取當前節點 選取當前節點的父節點 選取屬性 匹配規則 lang eng from lxml import etree text html etree.html text result ...