python爬蟲 xpath解析語法

2021-09-22 12:27:42 字數 1905 閱讀 2019

xpath 是一門在xml或者html文件中導航查詢資訊的語法,對html有很好的支援 xpath 是乙個w3c的標準;xpath 包含標準庫;

2.1節點擊擇

表示式:nodename |/ |// | . | .. | @ 

nodename: 選取此節點的所有子節點

/ :從根節點擊取

//div: 選取所有div子元素,而不考慮他們的位置

. : 選取當前節點

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

@ : 選取屬性

用法舉例:

nodename//div:選取所有屬於nodename元素的後代的div元素,不管在nodename之後的任意位置;

/article/div[1]:選取屬於article子元素的第乙個div元素

/article/div[last()]:選取屬於article子元素的最後乙個div元素

/article/div[last()-1]:選取屬於article子元素的倒數第二個div元素

//@class :選取所有名為class的屬性;

//div[@lang]:選取所有擁有lang屬性的div元素

//div[@lang=「eng」]:選取所有lang屬性為eng的div元素

/div/*:選取屬於div元素的所有子節點

//* :選取所有元素

//div[@*]:選取所有帶屬性的title元素

/div/a|//div/p :選取所有div元素的a和p元素

//span|//ul :選取文件中的span和ul元素

article/div/p|//span :選取所有屬於article元素的div元素的p元素以及文件中的所有的span元素;

2.2 xpath語法中的謂語用來查詢某個特定的節點或者包含某個指定值的節點,謂語被巢狀在方括號內;

3.1:"*" 萬用字元,他可以匹配任何元素節點;

3.2:/text()可以獲取標籤中的文字資訊

3.3:結果為列表的資料結構,可以通過切片獲取字串資料結構。

3.4:遇到相同的字元開頭的多個標籤,相同時爬取時,不需要構造多個xpath 路徑,通過starts-with(@屬性名稱,屬性字元相同的部分)便可獲取多個標籤內容;

用法舉例: 

需要的內容1

需要的內容2

需要的內容3

獲取內容:選取所有class屬性為tag的div元素

contents = selector.xpath('//li[starts-with(@class,"tag")]/text()')  

for content in contents:

print(content)

# starts-with() 可獲取類似標籤的資訊

3.5:當遇到標籤套標籤情況時:

用法舉例:

需要的內容1

#相同時爬取內容可以通過 string(.)完成;

#選取所有class屬性為red的div元素;

from lxml import etree

html2 = '''

需要的內容1

'''selector  = etree.html(html2)

content1 = selector.xpath("//div[@class = "red"]")[0]

content2 = selector.xpath('string(.)')

print(content2)

Python爬蟲之Xpath解析

例項化乙個etree物件,且需要將被解析的頁面的原始碼資料載入到該物件中 呼叫etree物件中的xpath方法結合著xpath表示式實現標籤的定位和內容的捕獲 pip install lxmlfrom lxml import etree1 將本地的html檔案中的原始碼載入到etree物件中 etr...

python 爬蟲 4 資料解析 xpath

html中的結構可能是棵樹,不一定是二叉樹,可能是多叉的。這時用xpath定位,解析會比較合適。語法 1.解析本地儲存 tree etree.parse filename 2.解析網上爬取 tree etree.html page text 3.標籤定位 tree.xpath html head 定...

python爬蟲資料解析之xpath

xpath是一門在xml文件中查詢資訊的語言。xpath可以用來在xml文件中對元素和屬性進行遍歷。在xpath中,有7中型別的節點,元素,屬性,文字,命名空間,處理指令,注釋及根節點。節點 首先看下面例子 1.0 encoding iso 8859 1 en harry potter j k.ro...