首頁 > 網際網路

php製作簡單的採集程式碼

2019-12-13 23:44:23

我們經常會發現要用到的資料都在一個網站上,而且資料展現格式都是一樣,比如淘寶或亞馬遜上成千上萬的產品,如果手工錄入資訊的話工作量就太大了,這時我們就可以編寫採集程式直接採集並展現出來。

1

首先在頁面加入一個文字方塊和提交按鈕,文字方塊用來輸入採集頁面地址。


2

採集需要用到正則擷取函數

function preg_substr($start, $end, $str) // 正則擷取函數      

{      

    $temp = preg_split($start, $str);      

    $content = preg_split($end, $temp[1]);      

    return $content[0];      

}   


3

採集需要用到字串擷取函數 

function str_substr($start, $end, $str) // 字串擷取函數      

{      

    $temp = explode($start, $str, 2);      

    $content = explode($end, $temp[1], 2);      

    return $content[0];      

}  


4

還有一個儲存採集的內容的函數:

function writelog($str)

{

@unlink("log.txt");

$open=fopen("log.txt","a" );

fwrite($open,$str);

fclose($open);

有時候採集到的內容和我們通過瀏覽器檢視的內容不一致,導致我們找不到正確的正規表示式,這裡就可以開啟儲存的txt檔案,在裡面找到正確的擷取字串。


5

如果需要連圖片也採集下來就需要用到圖片函數:

function getImage($url, $filename='', $dirName, $fileType, $type=0)

{

    if($url == ''){return false;}

    //獲取檔案原檔名

    $defaultFileName = basename($url);

    //獲取檔案型別

    $suffix = substr(strrchr($url,'.'), 1);

    if(!in_array($suffix, $fileType)){

        return false;

    }

    //設定儲存後的檔名

    $filename = $filename == '' ? time().rand(0,9).'.'.$suffix : $defaultFileName;

          

    //獲取遠端檔案資源

    if($type){

        $ch = curl_init();

        $timeout = 5;

        curl_setopt($ch, CURLOPT_URL, $url);

        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);

        $file = curl_exec($ch);

        curl_close($ch);

    }else{

        ob_start();

        readfile($url);

        $file = ob_get_contents();

        ob_end_clean();

    }

    //設定檔案儲存路徑

    $dirName = $dirName.'/'.date('Y', time()).'/'.date('m', time()).'/'.date('d',time()).'/';

    if(!file_exists($dirName)){

        mkdir($dirName, 0777, true);

    }

    //儲存檔案

    $res = fopen($dirName.$filename,'a');

    fwrite($res,$file);

    fclose($res);

    return $dirName.$filename;

}


6

加入採集程式碼,由於這裡加入採集程式碼不讓提交,直接上圖;

我們以亞馬遜的一個產品頁為例:輸入某個產品連結:



7

看看採集結果如下圖,這裡只展示內容,加入資料庫就比較簡單了,有時間再介紹自動進入下級連結或自動翻頁的採集。



IT145.com E-mail:sddin#qq.com