日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

PHP中使用DOMDocument來處理HTML、XML文檔的示例

瀏覽:172日期:2022-09-07 14:46:39

其實從PHP5開始,PHP就為我們提供了一個強大的解析和生成XML相關操作的類,也就是我們今天要講的 DOMDocument 類。不過我估計大部分人在爬取網頁時還是會喜歡用正則去解析網頁內容,學了今天的這個類下回就可以嘗試下使用這個PHP自帶的方式來進行解析分析了。

解析HTML

// 解析 HTML$baidu = file_get_contents(’https://www.baidu.com’);$doc = new DOMDocument();@$doc->loadHTML($baidu);// 百度輸出框$inputSearch = $doc->getElementById(’kw’);var_dump($inputSearch);// object(DOMElement)#2 // ....echo $inputSearch->getAttribute(’name’), PHP_EOL; // wd// 獲取所有圖片的鏈接$allImageLinks = [];$imgs = $doc->getElementsByTagName(’img’);foreach($imgs as $img){ $allImageLinks[] = $img->getAttribute(’src’);}print_r($allImageLinks);// Array// (// [0] => //www.baidu.com/img/baidu_jgylogo3.gif// [1] => //www.baidu.com/img/bd_logo.png// [2] => http://s1.bdstatic.com/r/www/cache/static/global/img/gs_237f015b.gif// )// 利用 parse_url 分析鏈接foreach($allImageLinks as $link){ print_r(parse_url($link));}// Array// (// [host] => www.baidu.com// [path] => /img/baidu_jgylogo3.gif// )// Array// (// [host] => www.baidu.com// [path] => /img/bd_logo.png// )// Array// (// [scheme] => http// [host] => s1.bdstatic.com// [path] => /r/www/cache/static/global/img/gs_237f015b.gif// )

是不是感覺好清晰,好有面向對象的感覺。就像第一次使用 ORM庫 來進行數據庫操作一樣的感覺。我們一段一段來看。

$baidu = file_get_contents(’https://www.baidu.com’);$doc = new DOMDocument();@$doc->loadHTML($baidu);

首先是加載文檔內容,這個比較好理解,直接使用 loadHTML() 方法加載 HTML 內容。它還提供了其它的幾個方法,分別是:load() 從一個文件加載XML;loadXML() 從字符串加載XML;loadHTMLFile() 從文件加載HTML。

// 百度輸出框$inputSearch = $doc->getElementById(’kw’);var_dump($inputSearch);// object(DOMElement)#2 // ....echo $inputSearch->getAttribute(’name’), PHP_EOL; // wd

首先是加載文檔內容,這個比較好理解,直接使用 loadHTML() 方法加載 HTML 內容。它還提供了其它的幾個方法,分別是:load() 從一個文件加載XML;loadXML() 從字符串加載XML;loadHTMLFile() 從文件加載HTML。

// 百度輸出框$inputSearch = $doc->getElementById(’kw’);var_dump($inputSearch);// object(DOMElement)#2 // ....echo $inputSearch->getAttribute(’name’), PHP_EOL; // wd

接下來我們使用和前端 JS 一樣的 DOM 操作API來操作HTML里面的元素。這個例子中就是獲取百度的文本框,直接使用 getElementById() 方法獲得id為指定內容的 DOMElement 對象。然后就可以獲取它的值、屬性之類的內容了。

// 獲取所有圖片的鏈接$allImageLinks = [];$imgs = $doc->getElementsByTagName(’img’);foreach($imgs as $img){ $allImageLinks[] = $img->getAttribute(’src’);}print_r($allImageLinks);// Array// (// [0] => //www.baidu.com/img/baidu_jgylogo3.gif// [1] => //www.baidu.com/img/bd_logo.png// [2] => http://s1.bdstatic.com/r/www/cache/static/global/img/gs_237f015b.gif// )// 利用 parse_url 分析鏈接foreach($allImageLinks as $link){ print_r(parse_url($link));}// Array// (// [host] => www.baidu.com// [path] => /img/baidu_jgylogo3.gif// )// Array// (// [host] => www.baidu.com// [path] => /img/bd_logo.png// )// Array// (// [scheme] => http// [host] => s1.bdstatic.com// [path] => /r/www/cache/static/global/img/gs_237f015b.gif// )

這一段例子則是獲取HTML文檔中所有的圖片鏈接。相比正則來說,是不是方便很多,而且代碼本身就是自解釋的,不用考慮正則的匹配失效的問題。配合另外一個PHP中自帶的 parse_url() 方法也能非常方便地對鏈接進行分析,提取自己想要的內容。

XML的解析和對HTML的解析也是類似的,都使用 DOMDocument 和 DOMElement 提供的這個方法接口就可以很方便的進行解析了。那么我們想要生成一個標準格式的XML呢?當然也非常的簡單,不需要再去拼接字符串了,使用這個類一樣的進行對象化的操作。

生成一個XML

// 生成一個XML文檔$xml = new DOMDocument(’1.0’, ’UTF-8’);$node1 = $xml->createElement(’First’, ’This is First Node.’);$node1->setAttribute(’type’, ’1’);$node2 = $xml->createElement(’Second’);$node2->setAttribute(’type’, ’2’);$node2_child = $xml->createElement(’Second-Child’, ’This is Second Node Child.’);$node2->appendChild($node2_child);$xml->appendChild($node1);$xml->appendChild($node2);print $xml->saveXML();/*<?xml version='1.0' encoding='UTF-8'?><First type='1'>This is First Node.</First><Second type='2'><Second-Child>This is Second Node Child.</Second-Child></Second>*/

其實只要有一點點的前端 JS 的基礎都不難看出這段代碼的含義。使用 createElement() 方法創造 DOMElement 對象,然后就可以為它添加屬性和內容。使用 appendChild() 方法就可以為當前的 DOMElement 或者 DOMDocument 添加下級節點。最后使用 saveXML() 就能夠生成標準的XML格式內容了。

總結

通過上面兩個簡單的小例子,相信大家已經對這個 DOMDocument 操作XML類文件解析的方式非常感興趣了。不過相對于正則解析的方式它們的性能有多大的差異并沒有找到相關的測試,不過一般正常的情況下網站的HMTL文檔都不會太大,畢竟各個網站也會考慮自身的加載速度,如果文檔非常大的話用戶體驗也會很差,所以這套接口用來進行日常爬蟲的分析處理工作基本是沒有任何問題的。

測試代碼: github.com/zhangyue050…

以上就是PHP中使用DOMDocument來處理HTML、XML文檔的示例的詳細內容,更多關于PHP DOMDocument處理HTML、XML的資料請關注好吧啦網其它相關文章!

標簽: PHP
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲精品国产偷自在线观看| 国产中文在线播放| 亚洲精品成人一区| 色一区二区三区| 福利一区二区| 国产美女亚洲精品7777| 天堂成人国产精品一区| 国产美女精品| 欧美日韩在线观看视频小说| 久久一区精品| 日韩一区二区免费看| 国产视频久久| 日韩毛片视频| 理论片午夜视频在线观看| 日韩欧美二区| 精品精品国产三级a∨在线| 日本欧美在线| 精品视频一区二区三区四区五区 | 亚洲综合日本| 六月婷婷综合| 国产一区二区亚洲| 精品免费视频| 国产精品国码视频| 久久国产精品色av免费看| 国产精品片aa在线观看| 日本免费在线视频不卡一不卡二| 免费久久99精品国产| 日韩1区2区3区| 综合激情网站| 久久国产66| 日韩av一二三| 日本aⅴ精品一区二区三区| 中文字幕视频精品一区二区三区| 欧美一区二区三区久久| 奇米777国产一区国产二区| 欧美在线亚洲| 少妇精品久久久| 日本视频中文字幕一区二区三区| 亚洲精品影视| 欧美交a欧美精品喷水| 国产乱子精品一区二区在线观看| 日韩一区二区三区精品视频第3页| 国产美女高潮在线| 日韩午夜精品| 亚洲麻豆一区| 久久精品99国产精品| 亚洲人成在线网站| 国产在线不卡| 热久久国产精品| 国产精品手机在线播放| 日韩高清不卡一区| 国产精品久久久一区二区| 亚洲高清影视| 免费在线观看视频一区| 美国欧美日韩国产在线播放| 久久精品人人| 国产不卡人人| 欧美va天堂在线| 国产伦精品一区二区三区千人斩| 国内精品美女在线观看| 日韩av首页| 婷婷精品在线观看| 欧美日韩一区二区三区在线电影| 国产精品久久久久久模特| 国产精品7m凸凹视频分类| 神马日本精品| 欧洲激情综合| 欧美亚洲综合视频| 国产一区丝袜| 极品日韩av| 欧美成人精品午夜一区二区| 日韩理论片av| 亚洲欧美在线专区| 天堂资源在线亚洲| 久久国产尿小便嘘嘘| 四虎4545www国产精品| 日韩欧美三区| 韩国女主播一区二区三区| 国产一区日韩一区| 久久精品超碰| av免费不卡国产观看| 亚洲精品va| 欧美黑人巨大videos精品| 亚洲一区不卡| 欧美aa在线视频| 日韩国产在线观看| 樱桃视频成人在线观看| 中文一区一区三区免费在线观 | 国产成人精品亚洲线观看| 亚洲h色精品| 国内精品伊人| 日韩中文字幕一区二区高清99| 日韩av在线中文字幕| 一本综合精品| 99热精品在线观看| 鲁大师精品99久久久| 在线视频日韩| 激情婷婷欧美| 精品久久99| 亚洲永久精品唐人导航网址| 成人在线丰满少妇av| 视频一区日韩精品| 国产美女高潮在线| 91精品在线免费视频| 亚洲伊人精品酒店| 亚洲黑丝一区二区| 精品午夜av| 国产精品nxnn| 欧美一区成人| 在线午夜精品| 2023国产精品久久久精品双 | 国产麻豆久久| 一本综合精品| 精品久久国产一区| 日韩精品亚洲专区在线观看| 亚洲性色视频| 美女福利一区二区三区| 亚洲精品观看| 中文在线免费视频| 亚洲成人精品| 成人台湾亚洲精品一区二区| 黄色国产精品| 麻豆精品蜜桃| 日韩中文字幕无砖| 久久要要av| 动漫av一区| 精品欧美视频| 国产色噜噜噜91在线精品| 欧洲精品一区二区三区| 国产一区二区精品福利地址| 青青国产精品| 亚洲毛片在线免费| 亚洲三级毛片| 亚洲欧洲av| 一区二区电影| 黄色精品网站| 欧美在线网站| 亚洲婷婷在线| 亚洲午夜精品久久久久久app| 精精国产xxxx视频在线播放| 精品国产一区二区三区2021| 欧美欧美黄在线二区| 国产激情久久| 日韩黄色在线观看| 男人天堂欧美日韩| 亚洲毛片一区| 日韩黄色在线观看| 日本不卡高清| 麻豆久久久久久| 蜜桃精品视频| 麻豆国产91在线播放| 成人国产精品一区二区网站| 国产精品一区二区免费福利视频 | 日韩成人高清| 在线看片国产福利你懂的| 狠狠久久伊人中文字幕| bbw在线视频| 欧美va天堂在线| 涩涩涩久久久成人精品| 久久精品国产福利| 99视频精品全部免费在线视频| 国产精品婷婷| 国产精品一区二区三区av| 日韩综合在线| 亚洲综合精品四区| 久久av免费| 五月天久久久| 欧美视频二区| 成人久久一区| 日韩在线视频一区二区三区| 久久不见久久见中文字幕免费| 日本在线高清| 免费不卡在线观看| 国产一区丝袜| 蜜桃视频一区二区三区在线观看| 欧美1区二区| 国产亚洲一区在线| 久久精品国产99国产| 女同性一区二区三区人了人一| 欧美亚洲国产日韩| 久久国产精品成人免费观看的软件| 综合激情网站| 日韩中文在线电影| 亚欧成人精品| 久久久成人网| 日韩精品成人| 日韩国产欧美视频| 日韩1区2区| 日韩欧美一区免费| 999国产精品视频| 亚洲一区av| av中文字幕在线观看第一页| 久久久久久一区二区| 伊人www22综合色| 麻豆视频在线看| 天堂8中文在线最新版在线| 日本va欧美va精品| 四虎成人av| 婷婷综合电影| 欧美成人高清|