PHP如何使用curl實現數據抓取
導語:PHP如何使用curl實現數據抓取呢?下面是小編給大家提供的.實現代碼,大家可以參考閲讀,更多詳情請關注應屆畢業生考試網。
<?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) {
//以下代碼設置代理服務器
//代理服務器地址 !!Hong Kong, China的速度比較好
curl_setopt ($ch, CURLOPT_PROXY,'' );
}
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // return don't print
curl_setopt($ch, CURLOPT_TIMEOUT, 30); //設置超時時間
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定向級別
curl_multi_add_handle($mh, $ch); // 把 curl resource 放進 multi curl handler 裏
$handle[$i++] = $ch;
}
/* 執行 */
do {
$mrc = curl_multi_exec($mh, $running);
if ($wait_usec > 0) /* 每個 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('');
$re = async_get_url($urls);
echo $re[0];
?>
-
提高PHP執行效率的50個技巧
PHP是一種HTML內嵌式的語言,是一種在服務器端執行的嵌入HTML文檔的腳本語言,下面是小編為大家整理的提高PHP執行效率的50個技巧,歡迎參考~1、用單引號代替雙引號來包含字符串,這樣做會更快一些。因為PHP會在雙引號包圍的字符串中搜尋變量,單引號則不會,注意:只有echo...
-
ThinkPHP中自動驗證
學無止境,剛開始學習PHP會覺得簡單,但是越學會越難。下面是小編整理的關於ThinkPHP中自動驗證的知識,希望對大家有用,更多消息請關注應屆畢業生網。ThinkPHP中自動驗證:array(‘字段’,‘驗證規則’,‘錯誤提示’[,‘驗證條件&rsqu...
-
php計算兩個文件相對路徑的方法
文章主要介紹了php計算兩個文件相對路徑的方法,涉及php操作字符串的`技巧,具有一定參考借鑑價值,需要的朋友可以參考下.一、問題:寫一個php函數算出兩個文件的相對路徑。例如$a="/a/b/c/d/";$b="/a/b/12/34/",B相對於A的相對路徑是什麼?二、解決方法:?123456789101...
-
PHP 7.1中都有哪些重大更新
PHP7.1.0帶來了大量的改進和新功能:可空類型返回空類型可迭代的psuedo-type支持常量可見的類數組解構square框架和在list()中允許指定keys多異常類型捕獲,以下是小編為大家搜索整理的PHP7.1中都有哪些重大更新,希望能給大家帶來幫助!更多精彩內容請及時關注我們應...