欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

php單線程爬蟲類

  1. 代碼:
    /**
    * @desc:?jiǎn)尉€程爬蟲類
    * @author [Lee] <[<complet@163.com>]>
    * @property
    * 1、callcontent 獲取給定url頁(yè)面中的內(nèi)容的回調(diào)函數(shù)
    * 2、calltodo 處理業(yè)務(wù)邏輯的回調(diào)函數(shù) 如:把抓取到的內(nèi)容處理后存到數(shù)據(jù)庫(kù)
    * @method
    * run 執(zhí)行爬蟲程序
    *     @param depth 深度 默認(rèn)2
    *     @return void
    */
    class crawl{
    public $callcontent = 'getcontent';  #  獲取給定url頁(yè)面中的內(nèi)容的回調(diào)函數(shù)
    public $calltodo = 'todo';  #  處理業(yè)務(wù)邏輯的回調(diào)函數(shù) 如:把抓取到的內(nèi)容處理后存到數(shù)據(jù)庫(kù)
    private $url;  #  內(nèi)部屬性:當(dāng)前處理中的url
    /*
     @desc:內(nèi)部方法,調(diào)用回調(diào)函數(shù)獲取頁(yè)面內(nèi)容
     @param url 傳入到回調(diào)函數(shù)的參數(shù)
     @return ret 頁(yè)面內(nèi)容
     */
    private function getcontent($url){
        $callback = $this->callcontent;
        $ret = call_user_func($callback,$url);
        return $ret;
    }
    /*
     @desc:內(nèi)部方法,調(diào)用回調(diào)函數(shù)進(jìn)行業(yè)務(wù)處理
     @param content 傳入到回調(diào)函數(shù)的參數(shù)
     */
    private function todo($content){
        $callback = $this->calltodo;
        call_user_func($callback,$content);
    }
    /*
     @desc:內(nèi)部方法,獲取頁(yè)面中的超鏈接
     @param content 頁(yè)面內(nèi)容
     @return urls 獲取到的超鏈接
     */
    private function geturl($content){
        $preg = '/<[a|A].*?href=[\'\"]{0,1}([^>\'\"\ ]*).*?>/';
        $bool = preg_match_all($preg,$content,$res);
        $urls = array();
        if($bool){
            $urls = $res[1];
        }
        $urls = array_unique($urls);
        return $urls;
    }
    /*
     @desc:內(nèi)部方法,修復(fù)不完整的url
     @param url 原始url
     @param url 修復(fù)好的url
     */
    private function reviseurl($url){
        $info = parse_url($url);
        $scheme = $info["scheme"]?:'http';
        $user = $info["user"];
        $pass = $info["pass"];
        $host = $info["host"];
        $port = $info["port"];
        $path = $info["path"];
        $url = $scheme . '://';
        if ($user && $pass) {
            $url .= $user . ":" . $pass . "@";
        }
        $url .= $host;
        if ($port) {
            $url .= ":" . $port;
        } 
        $url .= $path;
        return $url;
    }
    /*
     @desc:構(gòu)造方法,初始化url
     */
    public function __construct($url){
        $this->url = $url;
    }
    /*
     @desc:主方法,執(zhí)行程序
     @param depth 挖掘深度 默認(rèn)2
     */
    public function run($depth = 2){
        $url = $this->url;
        if($depth > 0){
            $depth--;
            $content = $this->getcontent($url);
            // 業(yè)務(wù)處理開(kāi)始
            $this->todo($content);
            // 業(yè)務(wù)處理結(jié)束
            $urls = $this->geturl($content);
            $url = $this->reviseurl($url);
            if (is_array($urls) && !empty($urls)) {
                foreach ($urls as $u) {
                    if (preg_match('/^http/', $u)) {
                        $returl = $u;
                    } else {
                        $real = $url . '/' . $u;
                        $returl = $real;
                    }
                    $crawl = new crawl($returl);
                    $crawl->run($depth);
                }
            }
        }
    }
    }
  2. 測(cè)試:
    $scrawl = new scrawl('https://blog.51cto.com/12173069');
    $scrawl->run(1);
    /*
    @desc:獲取內(nèi)容的回調(diào)
    */
    function getcontent($url){
    $content = file_get_contents($url);
    return $content;
    }
    /*
    @desc:處理業(yè)務(wù)邏輯的回調(diào)
    */
    function todo($content){
    $preg = '/<[a|A].*?href=[\'\"]{0,1}([^>\'\"\ ]*).*?>/i';
    $bool = preg_match_all($preg,$content,$res);
    $urls = array();
    if($bool){
        $urls = $res[1];
    }
    $urls = array_unique($urls);
    var_dump($urls);
    }
  3. 輸出:
    array(72) {
    [0]=>
    string(22) "https://blog.51cto.com/"
    [2]=>
    string(30) "https://blog.51cto.com/original"
    [3]=>
    string(34) "https://blog.51cto.com/cloumn/index"
    [4]=>
    string(28) "https://blog.51cto.com/expert"
    [5]=>
    string(35) "https://blog.51cto.com/blogger/index"
    [6]=>
    string(19) "javascript:void(0);"
    [7]=>
    string(20) "http://edu.51cto.com"
    [8]=>
    string(21) "https://blog.51cto.com"
    [9]=>
    string(21) "http://down.51cto.com"
    [10]=>
    string(21) "http://home.51cto.com"
    [11]=>
    string(20) "http://bbs.51cto.com"
    [12]=>
    string(18) "http://x.51cto.com"
    [13]=>
    string(0) ""
    [14]=>
    string(20) "http://wot.51cto.com"
    [15]=>
    string(20) "http://www.51cto.com"
    [16]=>
    string(89) "http://home.51cto.com/user/register?reback=http%253A%252F%252Fblog.51cto.com%252F12173069"
    [17]=>
    string(78) "https://blog.51cto.com/user/login?reback=http%3A%2F%2Fblog.51cto.com%2F12173069"
    [18]=>
    string(12) "javascript:;"
    [19]=>
    string(34) "https://blog.51cto.com/search/index"
    [23]=>
    string(40) "http://home.51cto.com/space?uid=12163069"
    [27]=>
    string(37) "https://blog.51cto.com/12173069?type=1"
    [28]=>
    string(37) "https://blog.51cto.com/12173069?type=2"
    [29]=>
    string(37) "https://blog.51cto.com/12173069?type=3"
    [30]=>
    string(30) "https://blog.51cto.com/12173069"
    [37]=>
    string(33) "https://blog.51cto.com/12173069?s="
    [38]=>
    string(34) "https://blog.51cto.com/12173069?s=3"
    [39]=>
    string(34) "https://blog.51cto.com/12173069?s=4"
    [40]=>
    string(34) "https://blog.51cto.com/12173069?s=5"
    [41]=>
    string(34) "https://blog.51cto.com/12173069?s=6"
    [50]=>
    string(38) "https://blog.51cto.com/12173069/2126752"
    [55]=>
    string(38) "https://blog.51cto.com/12173069/2126693"
    [60]=>
    string(38) "https://blog.51cto.com/12173069/2126661"
    [65]=>
    string(38) "https://blog.51cto.com/12173069/2126657"
    [70]=>
    string(38) "https://blog.51cto.com/12173069/2126596"
    [75]=>
    string(38) "https://blog.51cto.com/12173069/2126591"
    [80]=>
    string(38) "https://blog.51cto.com/12173069/2126496"
    [85]=>
    string(38) "https://blog.51cto.com/12173069/2126420"
    [90]=>
    string(38) "https://blog.51cto.com/12173069/2126324"
    [95]=>
    string(38) "https://blog.51cto.com/12173069/2126210"
    [100]=>
    string(38) "https://blog.51cto.com/12173069/2126090"
    [105]=>
    string(38) "https://blog.51cto.com/12173069/2125724"
    [110]=>
    string(38) "https://blog.51cto.com/12173069/2125666"
    [115]=>
    string(38) "https://blog.51cto.com/12173069/2125424"
    [120]=>
    string(38) "https://blog.51cto.com/12173069/2125359"
    [125]=>
    string(38) "https://blog.51cto.com/12173069/2124937"
    [130]=>
    string(38) "https://blog.51cto.com/12173069/2124923"
    [135]=>
    string(38) "https://blog.51cto.com/12173069/2124720"
    [140]=>
    string(38) "https://blog.51cto.com/12173069/2124693"
    [145]=>
    string(38) "https://blog.51cto.com/12173069/2124499"
    [147]=>
    string(33) "https://blog.51cto.com/12173069/p1"
    [148]=>
    string(33) "https://blog.51cto.com/12173069/p2"
    [149]=>
    string(33) "https://blog.51cto.com/12173069/p3"
    [150]=>
    string(33) "https://blog.51cto.com/12173069/p4"
    [151]=>
    string(33) "https://blog.51cto.com/12173069/p5"
    [152]=>
    string(33) "https://blog.51cto.com/12173069/p6"
    [153]=>
    string(33) "https://blog.51cto.com/12173069/p7"
    [154]=>
    string(33) "https://blog.51cto.com/12173069/p8"
    [156]=>
    string(34) "https://blog.51cto.com/12173069/p19"
    [159]=>
    string(39) "https://blog.51cto.com/ityouknow/2124403"
    [160]=>
    string(35) "https://blog.51cto.com/wyait/2125708"
    [161]=>
    string(39) "https://blog.51cto.com/lumay0526/2124116"
    [162]=>
    string(38) "https://blog.51cto.com/11010461/2123639"
    [163]=>
    string(35) "https://blog.51cto.com/qiuyt/2124456"
    [164]=>
    string(30) "https://blog.51cto.com/13716231"
    [166]=>
    string(30) "https://blog.51cto.com/13108471"
    [168]=>
    string(30) "https://blog.51cto.com/10316297"
    [170]=>
    string(30) "https://blog.51cto.com/13718637"
    [172]=>
    string(30) "https://blog.51cto.com/13681316"
    [174]=>
    string(20) "http://www.51CTO.com"
    [175]=>
    string(37) "https://blog.51cto.com/blogger/publish"
    [176]=>
    string(71) "http://wpa.qq.com/msgrd?v=3&amp;uin=3591348659&amp;site=qq&amp;menu=yes"
    [177]=>
    string(39) "https://blog.51cto.com/51ctoblog/2057444"
    }

網(wǎng)站標(biāo)題:php單線程爬蟲類
文章URL:http://aaarwkj.com/article44/psoche.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機(jī)、移動(dòng)網(wǎng)站建設(shè)、標(biāo)簽優(yōu)化關(guān)鍵詞優(yōu)化、ChatGPT微信公眾號(hào)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)
中文字幕有码精品在线| 91在线视频麻豆国产| 中文字幕亚洲精品视频| 久久精品夜夜夜夜夜久久| 欧美黄片在线免费观看视频| 亚洲中文波霸中文字幕| 国产中文字二暮区2021综合 | 农村精品少妇久久久久久| 激情五月婷婷中文字幕| 亚洲欧美天堂一区二区| 成人污视频网站在线观看| 午夜看片国产操黑丝91网| 日韩精品在线第一视频| 欧美日韩精品一区二区视频永久免| 成人精品国产一区二区| 国产亚洲一区二区视频| 国产欧美日韩在线高清| 国产一区二区三区百合| 国产精品三级国产精品高| 伊人久久亚洲精品综合| 色日韩在线观看视频| 日韩欧美一区二区大片| 久久91亚洲精品中文字幕| 日韩黄色成人在线观看| 国产传媒在线播放一区| 丁香六月综合激情啪啪啪| 国产精品久久久亚洲不卡| 久久久久久国产综合精品| 中文字幕一区侵犯人妻| 国产精品一区波多野结衣| av在线观看亚洲天堂| 日韩精品电影一区在线观看| 一区二区三区毛片观看| 免费高清av一区二区| 在线 | 一区二区三区四区| 国产亚洲一区二区三区av| 国产一区二区毛多内射| 日韩熟女av中文字幕| 国产av人妻精品一区二| 婷婷色精品一区二区激情| 蜜臀视频网站在线观看|