網頁爬蟲XPath 定位

2021-08-20 17:55:52 字數 1580 閱讀 2180

最近使用到了xpath進行爬蟲標籤的定位,就將常用的語法總結了一下,方便下次使用時做參考。

# 倒數第二個 book 元素

//bookstore/book[last()-1]

# 除了第乙個 book 元素

//bookstore/book[position()>1]

# price 元素的值須大於 35.00 且不等於 38.00

//bookstore/book[price>35.00 and price!=38.00]

# 標籤屬性定位

//input[@class='container']

//input[@type='text' and @name='username']

# 標籤屬性條件匹配定位

//input[start-with(@id,'post')]

//input[ends-with(@id,'post')]

# 組合條件:選取 book 元素的所有 title 和 price 元素

//book/title | //book/price

# 相鄰標籤:選取a標籤同級的上乙個p元素

//a/preceding-sibling::p[1]

# 下乙個p元素

//a/following-sibling::p[1]

# 父子標籤:

# 上一級父標籤

//a/parent::*

# 所有父標籤

//a/ancestor::*

# 下一級子標籤

//a/child::*

# 所有子標籤

//a/descendant::*

# 節點統計

count(//li[@data])')

# 字串連線

concat(//li[@data="one"]/text(),//li[@data="three"]/text())

# 解析當前節點下的字元,作用於list時只匹配第乙個

string(//li)

# 解析節點名稱

local-name(//*[@id="testid"])

# 組合定位:匹配帶有href屬性的a標籤的先輩節點中的div,其兄弟節點中前乙個div節點下ul下li中text屬性包含「務」字的節點的值

//a[@href]/ancestor::div/preceding::div/ul/li[contains(text(),"務")]/text()

# not:布林值(否):不包含data屬性的li標籤統計

count(//li[not(@data)])

# 返回指定字串的長度:string-length函式+local-name函式定位節點名長度小於2的元素

//*[string-length(local-name())<2]/text()

# 組合:contains函式+local-name函式定位節點名包含di的元素

//div[@id="testid"]/following::div[contains(local-name(),"di")]

網路爬蟲之網頁資料解析(XPath)

xpath定義 xpath表示式 lxml庫 xpath案例 引入有人說,我正則用的不好,處理html文件很累,有沒有其他的方法?有!那就是xpath,我們可以先將網路獲取的string型別資料轉換成 html xml文件,然後用 xpath 查詢 html xml 節點或元素。什麼是xml 大家都...

xpath屬性定位

絕對定位 element driver.find element by xpath html body div input value 查詢 裡是屬性,什麼屬性都可以,是對當前節點的限制條件相對定位 element driver.find element by xpath div class ng ...

詳解xpath定位

xpath定位 1 通過開發者工具直接copy 右擊copy copy xpath 2 串聯的方式定位元素 3 通過父元素定位子元素 from selenium import webdriver from time import sleep driver webdriver.chrome drive...