PHP爬蟲(2)DOM處理

摘要:PHP爬蟲(1中詳細了介紹了CURL抓取HTML數據的技術。採集數據處理也是爬蟲技術中很是重要的部分。處理HTML數據能夠用字符串查找,也能夠利用正則表達式,但採用Dom處理是最高級的方法。php

如今咱們要抓取中國軍網首頁「軍媒要聞要論」第一條內容,html

 

經過瀏覽器工具查看網頁元素,經過console獲取數據。經過下圖咱們能夠看到,在瀏覽器中咱們能夠方便調用Jquerydom查找函數,輕鬆找到數據,PHP中是否也有這樣的工具能夠很方便的處理DOMgit

 

github上查找php dom parse,咱們找到sunra/php-simple-html-dom-parser,使用用戶還挺多的。下面咱們介紹如何使用PhpDomParse組件,分別介紹直接引用、composerThinkPhp中如何使用。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"

相關文章
相關標籤/搜索