php使用curl代理實(shí)現(xiàn)抓取數(shù)據(jù)的方法
本文實(shí)例講述了php使用curl代理實(shí)現(xiàn)抓取數(shù)據(jù)的方法。分享給大家供大家參考,具體如下:
<?php define ( 'IS_PROXY', true ); //是否啟用代理 function async_get_url($url_array, $wait_usec = 0) { if (!is_array($url_array)) return false; $wait_usec = intval($wait_usec); $data = array(); $handle = array(); $running = 0; $mh = curl_multi_init(); // 開啟多線程 $i = 0; foreach($url_array as $url) { $ch = curl_init(); if (IS_PROXY) { //以下代碼設(shè)置代理服務(wù)器 //代理服務(wù)器地址http://www.cnproxy.com/proxy1.html !!Hong Kong, China的速度比較好 curl_setopt ($ch, CURLOPT_PROXY,'110.4.12.170:80' ); } curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // return don't print curl_setopt($ch, CURLOPT_TIMEOUT, 30); //設(shè)置超時(shí)時(shí)間 curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)'); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // 302 redirect curl_setopt($ch, CURLOPT_MAXREDIRS, 7); //HTTp定向級(jí)別 curl_multi_add_handle($mh, $ch); // 把 curl resource 放進(jìn) multi curl handler 里 $handle[$i++] = $ch; } /* 執(zhí)行 */ do { $mrc = curl_multi_exec($mh, $running); if ($wait_usec > 0) /* 每個(gè) connect 要間隔多久 */ usleep($wait_usec); // 250000 = 0.25 sec } while ($mrc == CURLM_CALL_MULTI_PERFORM); while ($running && $mrc == CURLM_OK) { if (curl_multi_select($mh) != -1) { do { $mrc = curl_multi_exec($mh, $running); } while ($mrc == CURLM_CALL_MULTI_PERFORM); } } /* 讀取資料 */ foreach($handle as $i => $ch) { $content = curl_multi_getcontent($ch); $data[$i] = (curl_errno($ch) == 0) ? $content : false; } /* 移除 handle*/ foreach($handle as $ch) { curl_multi_remove_handle($mh, $ch); } curl_multi_close($mh); return $data; } $urls = array('http://map.baidu.com'); $re = async_get_url($urls); echo $re[0]; ?>
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《php curl用法總結(jié)》、《PHP數(shù)組(Array)操作技巧大全》、《php排序算法總結(jié)》、《PHP常用遍歷算法與技巧總結(jié)》、《PHP數(shù)據(jù)結(jié)構(gòu)與算法教程》、《php程序設(shè)計(jì)算法總結(jié)》、《PHP數(shù)學(xué)運(yùn)算技巧總結(jié)》、《php正則表達(dá)式用法總結(jié)》、《PHP運(yùn)算與運(yùn)算符用法總結(jié)》、《php字符串(string)用法總結(jié)》及《php常見數(shù)據(jù)庫操作技巧匯總》
希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。
- PHP+fiddler抓包采集微信文章閱讀數(shù)點(diǎn)贊數(shù)的思路詳解
- Fiddler如何抓取手機(jī)APP數(shù)據(jù)包
- fiddler抓包小技巧之自動(dòng)保存抓包數(shù)據(jù)的實(shí)現(xiàn)方法分析【可根據(jù)需求過濾】
- Python如何爬取微信公眾號(hào)文章和評(píng)論(基于 Fiddler 抓包分析)
- 抓包工具Fiddler的使用方法詳解(Fiddler中文教程)
- Fiddler實(shí)現(xiàn)手機(jī)抓包之小白入門必看
- 利用Fiddler對(duì)手機(jī)進(jìn)行抓包的實(shí)現(xiàn)方法
- PHP的cURL庫功能簡(jiǎn)介 抓取網(wǎng)頁、POST數(shù)據(jù)及其他
- PHP中4種常用的抓取網(wǎng)絡(luò)數(shù)據(jù)方法
- PHP的CURL方法curl_setopt()函數(shù)案例介紹(抓取網(wǎng)頁,POST數(shù)據(jù))
- PHP配合fiddler抓包抓取微信指數(shù)小程序數(shù)據(jù)的實(shí)現(xiàn)方法分析
相關(guān)文章
php中l(wèi)trim()、rtrim()與trim()刪除字符空格實(shí)例
這篇文章主要介紹了php中l(wèi)trim()、rtrim()與trim()刪除字符空格的方法.以實(shí)例形式分別講述了ltrim()、rtrim()與trim()的具體用法,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2014-11-11Windows下PHP開發(fā)環(huán)境搭建教程(Apache+PHP+MySQL)
這篇文章主要為大家詳細(xì)介紹了Windows下PHP開發(fā)環(huán)境搭建教程:Apache+PHP+MySQL,具有一定的實(shí)用性和參考價(jià)值,感興趣的小伙伴們可以參考一下2016-06-06幾個(gè)優(yōu)化WordPress中JavaScript加載體驗(yàn)的插件介紹
這篇文章主要介紹了幾個(gè)優(yōu)化WordPress中JavaScript加載體驗(yàn)的插件,一般來說在WordPress中加載JavaScript最好使用wp_enqueue_script()函數(shù)以減少問題提高效率,需要的朋友可以參考下2015-12-12php基礎(chǔ)知識(shí):類與對(duì)象(5) static
php基礎(chǔ)知識(shí):類與對(duì)象(5) static...2006-12-12PHP使用gearman進(jìn)行異步的郵件或短信發(fā)送操作詳解
這篇文章主要介紹了PHP使用gearman進(jìn)行異步的郵件或短信發(fā)送操作,總結(jié)分析了PHP基于gearman實(shí)現(xiàn)異步的郵件或短信發(fā)送相關(guān)配置、啟動(dòng)與操作注意事項(xiàng),需要的朋友可以參考下2020-02-02PHP學(xué)習(xí)之?dāng)?shù)組值的操作
PHP中,用list來析取數(shù)組中的值,如list($a, $b) = $array。2011-04-04