在進行網絡爬蟲或者網頁內容分析時,經常需要從html文檔中提取特定的信息。然而,原始的dom操作往往比較繁瑣,而且不同的網頁結構差異很大,使得提取過程變得復雜而容易出錯。這時候,LaminasDom組件就能派上大用場。
laminasdom組件提供了一個統一的接口,可以使用xpath或者css選擇器來查詢dom文檔。這意味著你可以像使用jquery一樣,用簡潔的css選擇器來定位元素,或者使用更強大的xpath表達式來精確地提取數據。
使用composer安裝LaminasDom非常簡單:
composer require laminas/laminas-dom
示例:使用css選擇器提取標題
假設我們有以下HTML代碼:
<!DOCTYPE html> <html> <head> <title>LaminasDom 示例</title> </head> <body> <div class="content"> <h1>這是一個標題</h1> <p>這是一段文字。</p><p><span>立即學習</span>“<a href="https://pan.quark.cn/s/cb6835dc7db1" style="text-decoration: underline !important; color: blue; font-weight: bolder;" rel="nofollow" target="_blank">前端免費學習筆記(深入)</a>”;</p> </div> </body> </html>
我們可以使用LaminasDomQuery來提取
標簽的內容:
use LaminasDomQuery; $html = '<!DOCTYPE html><html><head><title>LaminasDom 示例</title></head><body><div class="content"><h1>這是一個標題</h1><p>這是一段文字。</p><p><span>立即學習</span>“<a href="https://pan.quark.cn/s/cb6835dc7db1" style="text-decoration: underline !important; color: blue; font-weight: bolder;" rel="nofollow" target="_blank">前端免費學習筆記(深入)</a>”;</p></div></body></html>'; $query = new Query($html); $results = $query->execute('div.content h1'); foreach ($results as $result) { echo $result->nodeValue . PHP_EOL; // 輸出:這是一個標題 }
use LaminasDomQuery; $html = '<!DOCTYPE html><html><head><title>LaminasDom 示例</title></head><body><div class="content"><h1>這是一個標題</h1><p>這是一段文字。</p><p><span>立即學習</span>“<a href="https://pan.quark.cn/s/cb6835dc7db1" style="text-decoration: underline !important; color: blue; font-weight: bolder;" rel="nofollow" target="_blank">前端免費學習筆記(深入)</a>”;</p></div></body></html>'; $query = new Query($html); $results = $query->execute('div.content h1'); foreach ($results as $result) { echo $result->nodeValue . PHP_EOL; // 輸出:這是一個標題 }
示例:使用XPath提取內容
同樣,我們也可以使用XPath來提取相同的信息:
use LaminasDomQuery; $html = '<!DOCTYPE html><html><head><title>LaminasDom 示例</title></head><body><div class="content"><h1>這是一個標題</h1><p>這是一段文字。</p><p><span>立即學習</span>“<a href="https://pan.quark.cn/s/cb6835dc7db1" style="text-decoration: underline !important; color: blue; font-weight: bolder;" rel="nofollow" target="_blank">前端免費學習筆記(深入)</a>”;</p></div></body></html>'; $query = new Query($html); $results = $query->execute('//div[@class="content"]/h1'); foreach ($results as $result) { echo $result->nodeValue . PHP_EOL; // 輸出:這是一個標題 }
通過以上示例可以看出,LaminasDom組件極大地簡化了DOM操作,使得我們可以更方便、更高效地從HTML文檔中提取數據。無論是簡單的css選擇器還是復雜的XPath表達式,LaminasDom都能輕松應對。
Composer在線學習地址:學習地址
注意:
需要注意的是,laminas/laminas-dom 組件已經被官方標記為 abandoned,不再進行維護。官方推薦使用 symfony/dom-crawler 作為替代方案。因此,在新的項目中,建議優先考慮 symfony/dom-crawler。
總而言之,雖然 laminas/laminas-dom 組件已經停止維護,但它仍然是一個非常有用的工具,可以幫助我們解決網頁內容抓取和解析的難題。如果你還在使用它,可以繼續利用其強大的功能。但同時,也建議考慮遷移到 symfony/dom-crawler 等更活躍的替代方案。