xpath 是一門在 xml 文件中查詢資訊的語言。xpath它可以用來在 xml 文件中對元素和屬性進行遍歷。
要使用xpath首先需要安裝lxml,在終端輸入如下命令即可:pip install lxml
什麼是xpath?
首先先來介紹下xml,它是用來儲存和傳輸資料使用的。
和html的不同有以下的兩點:
(1)html用來顯示資料,xml是用來傳輸資料
(2)html標籤是固定的,xml標籤是自定義的
xpath用來在xml中查詢指定的元素,它是一種路徑表示式
常用的路徑表示式:
// : 不考慮位置的查詢
./ : 從當前節點開始往下查詢
@ : 選取屬性
示例如下:
/bookstore/book :選取根節點bookstore下面所有直接子節點book
//book :選取所有book
bookstore//book :查詢bookstore下面所有的book
/bookstore/book[1] :bookstore裡面的第乙個book
/bookstore/book[last()] :bookstore裡面的最後乙個book
/bookstore/book[position()<3] :前兩個book
//title[@lang]: 所有的帶有lang屬性的title節點
//title[@lang='eng'] 所有的lang屬性值為eng的title節點
* : 任何元素節點
為了使用xpath大致查詢頁面上滿足條件的部分
可以在瀏覽器上安裝xpath外掛程式:只需要將xpath外掛程式拖動到谷歌瀏覽器擴充套件程式中即可。
啟動和關閉外掛程式的命令ctrl +: shift + x
(1)通過屬性進行定位
//input[@id="kw"]
//input[@class="bg s_btn"]
(2) 層級定位
索引定位
//div[@id="head"]/div/div[2]/a[@class="toindex"]
【注】索引從1開始
//div[@id="head"]//a[@class="toindex"]
【注】雙斜槓代表下面所有的a節點,不管位置
邏輯運算
//input[@class="s_ipt" and @name="wd"]
模糊匹配
contains
//input[contains(@class, "s_i")]
所有的input,有class屬性,並且屬性中帶有s_i的節點
//input[contains(text(), "愛")]
starts-with
//input[starts-with(@class, "s")]
所有的input,有class屬性,並且屬性以s開頭
取文字//div[@id="u1"]/a[5]/text() 獲取節點內容
//div[@id="u1"]//text() 獲取節點裡面不帶標籤的所有內容
取屬性
//div[@id="u1"]/a[5]/@href
在**中進行使用方法如下
from lxml import etree
兩種方式使用:將html文件變成乙個物件,然後呼叫物件的方法去查詢指定的節點
(1)本地檔案
tree = etree.parse(檔名)
(2)網路檔案
tree = etree.html(網頁字串)
ret = tree.xpath(路徑表示式)
注意:ret是乙個列表
#將所用滿足條件的內容進行拼接起來形成string
ret = tree.xpath('//div[@class="**"]')
string = ret[0].xpath('string(.)')
print(string.replace('\n', '').replace('\t', ''))
XPath簡單介紹
一 xpath即為xml路徑語言,它是一種用來確定xml 標準通用標記語言的子集 文件中某部分位置的語言。xpath基於xml的樹狀結構,提供在資料結構樹中找尋節點的能力,被開發者採用來當作小型查詢語言。1 在 xpath 中,有七種型別的節點 元素 屬性 文字 命名空間 處理指令 注釋以及文件 根...
爬蟲xpath介紹以及基本用法
import requests from lxml import etree text html etree.html text 將上述字串解析為html文件,構造xpath的解析物件 result etree.tostring html 這裡是將html文件進行完成的修正 print result...
LESS命令簡單介紹以及使用
less命令簡單介紹以及使用 b 緩衝區大小 設定緩衝區的大小 e 當檔案顯示結束後,自動離開 f 強迫開啟特殊檔案,例如外圍裝置代號 目錄和二進位制檔案 i 忽略搜尋時的大小寫 m 顯示類似more命令的百分比 n 顯示每行的行號 o 檔名 將less 輸出的內容在指定檔案中儲存起來 q 不使用警...