亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于PHP的網(wǎng)絡(luò)數(shù)據(jù)采集

        2018-03-24 09:14:14王小潔
        山西電子技術(shù) 2018年6期
        關(guān)鍵詞:網(wǎng)址代碼標(biāo)簽

        王小潔

        (山西職業(yè)技術(shù)學(xué)院,山西 太原 030006)

        PHP提供了多種數(shù)據(jù)采集方法,如使用snoopy、simple_html_dom、socket等,為人們采集網(wǎng)絡(luò)數(shù)據(jù)提供了極大便利,文章闡述本人在實(shí)踐中常用的幾種方法[1]。

        1 使用file_get_contents()函數(shù)采集數(shù)據(jù)

        使用file_get_contents()函數(shù)進(jìn)行數(shù)據(jù)采集首先需要確定要采集的網(wǎng)址,然后使用該函數(shù)對(duì)網(wǎng)頁(yè)進(jìn)行采集,接著對(duì)采集結(jié)果使用正則表達(dá)式對(duì)需要采集的數(shù)據(jù)進(jìn)行精確匹配,最后輸出采集結(jié)果。以抓取某網(wǎng)站的圖片為例,代碼框架如下:

        $url="http://www.***.com";

        $data=file_get_contents($url);

        echo "

        ";

        print_r($arr);

        上述代碼描述中“***”是根據(jù)實(shí)際情況確定的網(wǎng)址及源代碼中的類名等,后續(xù)代碼中含義相同。

        2 使用curl函數(shù)采集數(shù)據(jù)

        curl函數(shù)功能比較強(qiáng)大,可以模擬get請(qǐng)求、post請(qǐng)求、文件上傳等,是較好的數(shù)據(jù)采集工具。使用file_get_contents()函數(shù)進(jìn)行數(shù)據(jù)采集前需要開啟curl擴(kuò)展。通過(guò)實(shí)踐,得出比較完整的采集過(guò)程需要六個(gè)步驟,第一步初始化curl,即創(chuàng)建一個(gè)新的curl資源,第二步設(shè)置請(qǐng)求參數(shù),如設(shè)置需要抓取的網(wǎng)址、數(shù)據(jù)以文件流的方式返回等,第三步發(fā)送請(qǐng)求,第四步結(jié)合正則表達(dá)式進(jìn)行精確數(shù)據(jù)抓取,第五步輸出抓取結(jié)果,第六步關(guān)閉請(qǐng)求,代碼框架如下:

        $ch=curl_init();

        curl_setopt($ch, CURLOPT_URL, "http://www.***.com");

        curl_setopt($ch,CURLOPT_RETURNTRANSFER,TRUE);

        $data=curl_exec($ch);

        preg_match_all('***',$data,$arr);

        var_dump($arr);

        curl_close($ch);

        3 使用QueryList工具采集數(shù)據(jù)

        目前QueryList 最新版本僅支持php7.0 以上,且僅支持composer安裝。實(shí)際使用建議采用QueryList 3版本。安裝QueryList前建議先下載composer,然后通過(guò)執(zhí)行composer命令安裝QueryList。

        使用querylist方法進(jìn)行數(shù)據(jù)采集,需要導(dǎo)入自動(dòng)加載文件、導(dǎo)入QueryList類、制定采集規(guī)則、抓取數(shù)據(jù)、輸出結(jié)果等步驟,以獲取某網(wǎng)站title為例,代碼可以參照下列代碼框架進(jìn)行編寫:

        include "***/autoload.php";

        use QLQueryList;

        $url="http://www.***.com";

        $reg=array(

        "title"=>array("title", 'text'),

        );

        $data=QueryList::Query($url,$reg)->data;

        echo "

        ";

        print_r($data);

        如想抓取網(wǎng)站某條新聞的標(biāo)題、圖片、描述信息等,只需更改規(guī)則,如做如下更改:

        $reg=array(

        "title"=>array("此處為某條信息標(biāo)題的所在的類名、標(biāo)簽名",'html'),

        "img"=>array("此處為新聞圖片所在的類名、標(biāo)簽名",'src'),

        "description"=>array("此處為新聞的描述信息所在的類名、標(biāo)簽名",'html'),

        );

        4 使用curl與 QueryList,二者結(jié)合起來(lái)采集數(shù)據(jù)

        在此,以抓取某網(wǎng)站圖片為例,闡述思路及代碼框架,編程步驟如下:。

        1)確定網(wǎng)址

        $url="http://www.***.com/";

        2)制定抓取規(guī)則

        $reg=array(

        "img"=>array("*** img",'src','','checkurl'),

        );

        此處checkurl為回調(diào)函數(shù),目的是拼接完整域名。函數(shù)如下:

        function checkurl($a){

        return "http://www.***.com".$a;

        }

        3)采集數(shù)據(jù)

        $data=Querylist::Query($url,$reg)->data;

        4)下載圖片

        在執(zhí)行程序之前,應(yīng)在當(dāng)前目錄中建立imgdown文件夾,以保存下載的圖片。

        foreach($data as $key=>$value){

        $file= $value['img'];

        $newFile="./imgdown/".basename($file);

        downImg($file,$newFile);

        }

        downImg為下載函數(shù),該函數(shù)的功能使用curl函數(shù)來(lái)實(shí)現(xiàn),通過(guò)創(chuàng)建資源、設(shè)置請(qǐng)求參數(shù)、發(fā)送請(qǐng)求、數(shù)據(jù)抓取,輸出抓取結(jié)果、關(guān)閉請(qǐng)求等步驟實(shí)現(xiàn)了圖片的下載功能,代碼如下:

        function downImg($file,$newFile){

        $ch=curl_init();

        curl_setopt($ch, CURLOPT_URL, $file);

        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

        $tmp=curl_exec($ch);

        curl_close($ch);

        file_put_contents($newFile, $tmp);

        }

        運(yùn)行程序,可以在imgdown文件夾中看到下載的圖片。

        5 結(jié)語(yǔ)

        上述三種數(shù)據(jù)采集方法各有特點(diǎn),也因地制宜應(yīng)用于不同的采集需求。一般來(lái)說(shuō),CURL 效率比f(wàn)ile_get_contents 要高很多;CURL 支持的方式比較多,如支持get、post、文件上傳等,而file_get_contents只支持get請(qǐng)求;CURL 的復(fù)雜程度高于file_get_contents。QueryList采用CSS選擇器做采集,不需要復(fù)雜的正則表達(dá)式,能很容易就可以獲取所需的內(nèi)容,使代碼易懂易維護(hù),并且提供了豐富的多線程、圖片下載等功能插件[2],還具備強(qiáng)大的DOM操作能力,是簡(jiǎn)潔高效的PHP數(shù)據(jù)采集工具。在實(shí)際采集過(guò)程中,三者可以結(jié)合使用,更好地達(dá)到采集目的。

        猜你喜歡
        網(wǎng)址代碼標(biāo)簽
        2023年6月全宅影音器材編輯推薦
        本刊網(wǎng)址變更通知
        創(chuàng)世代碼
        創(chuàng)世代碼
        創(chuàng)世代碼
        創(chuàng)世代碼
        無(wú)懼標(biāo)簽 Alfa Romeo Giulia 200HP
        車迷(2018年11期)2018-08-30 03:20:32
        不害怕撕掉標(biāo)簽的人,都活出了真正的漂亮
        海峽姐妹(2018年3期)2018-05-09 08:21:02
        標(biāo)簽化傷害了誰(shuí)
        基于多進(jìn)制查詢樹的多標(biāo)簽識(shí)別方法
        亚洲成av人片极品少妇| 国产精品麻豆成人AV电影艾秋| 国产精品久久久亚洲第一牛牛| av男人的天堂第三区| 久久人妻av无码中文专区| 亚洲熟妇无码八av在线播放| 另类亚洲欧美精品久久不卡| 国产高清一区二区三区视频| 国产变态av一区二区三区调教| 无码成人一区二区| 欧美视频久久久| 亚洲色图视频在线观看,| 日本熟女中文字幕在线| 亚洲中文久久精品无码| 好爽受不了了要高潮了av| 中文字幕 在线一区二区| 大桥未久av一区二区三区| 极品美女aⅴ在线观看| 激情人妻在线视频| 麻豆成年人视频在线观看| 岳丰满多毛的大隂户| 236宅宅理论片免费| 99精品国产自产在线观看| 久久久久久中文字幕有精品| 国产视频一区二区三区在线看| 日本边添边摸边做边爱| 亚洲精品乱码久久久久久久久久久久 | 中文字幕无码高清一区二区三区 | 国产精品黑丝美女啪啪啪| 国产乱xxⅹxx国语对白| 亚洲V无码一区二区三区四区观看 久久精品国产亚洲综合色 | 亚洲成av人无码免费观看| 人妖国产视频一区二区| 国产精品自在拍在线拍| 国产爆乳乱码女大生Av| 久久精品国产亚洲av专区| 超碰人人超碰人人| 男女超爽视频免费播放| 日韩av中文字幕亚洲天| 在线精品亚洲一区二区动态图| 中国猛少妇色xxxxx|