摘要:在PHP爬蟲(1)中詳細了介紹了CURL抓取HTML數據的技術。採集數據處理也是爬蟲技術中很是重要的部分。處理HTML數據能夠用字符串查找,也能夠利用正則表達式,但採用Dom處理是最高級的方法。php
如今咱們要抓取中國軍網首頁「軍媒要聞要論」第一條內容,html
經過瀏覽器工具查看網頁元素,經過console獲取數據。經過下圖咱們能夠看到,在瀏覽器中咱們能夠方便調用Jquery的dom查找函數,輕鬆找到數據,PHP中是否也有這樣的工具能夠很方便的處理DOM?git
在github上查找php dom parse,咱們找到sunra/php-simple-html-dom-parser,使用用戶還挺多的。下面咱們介紹如何使用PhpDomParse組件,分別介紹直接引用、composer、ThinkPhp中如何使用。github
1.直接引用正則表達式
首選下載組件文件夾,在當前工程目錄中執行thinkphp
git clone https://github.com/sunra/php-simple-html-dom-parser.git
此時,工程目錄下就會多出php-simpple-html-dom-parser文件夾,文件夾目錄以下圖json
引用HtmlDomParaer.php瀏覽器
<?php include "./php-simple-html-dom-parser/Src/Sunra/PhpSimple/HtmlDomParser.php"; use Sunra\PhpSimple\HtmlDomParser; $url = "http://www.81.cn"; $dom = HtmlDomParser::file_get_html( $url ); $u = $dom->find("#JMYWYL dt",0); $title = $u ->find('a',0); echo $title->innertext; ?>
2.Composer調用方法composer
在工程目錄下安裝Composer.phar,建立composer.json文件,框架
{ "require": { "sunra/php-simple-html-dom-parser": "v1.5.0" } }
運行,php compose.phar install
Composer會根據composer.json內容,下載須要的文件,安裝成功以後,工程文件夾以下,
代碼以下,系統會自動加載\Sunra\PhpSimple\HtmlDomParse
<?php require __DIR__ . '/vendor/autoload.php'; $url = "http://www.81.cn"; $dom = \Sunra\PhpSimple\HtmlDomParser::file_get_html( $url ); $u = $dom->find("#JMYWYL dt",0); $title = $u ->find('a',0); echo $title->innertext; ?>
三、thinkphp框架
筆者平常也是使用TP框架的,也許有的讀者沒在TP中引入其餘框架。TP提供了進入框架的機制,咱們將Sunra文件夾放在「安裝路徑-->ThinkPHP->Library->Vendor」目錄中,結構以下圖所示,
工程代碼以下
class IndexController extends Controller { public function index(){ } public function dom() { Vendor('Sunra.PhpSimple.HtmlDomParser'); $url = "http://www.81.cn"; //$dom = \Sunra\PhpSimple\HtmlDomParser::file_get_html( $url ); $dom =file_get_html( $url ); $u = $dom->find("#JMYWYL dt",0); $title = $u ->find('a',0); echo $title->innertext; } }
附錄
php composer.phar install,出現下列錯誤,
SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
解決辦法,
(1)wget http://curl.haxx.se/ca/cacert.pem
(2)修改php.ini,添加
openssl.cafile="/opt/lampp/cacert.pem"