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...