一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - PHP多線程抓取網頁實現代碼

PHP多線程抓取網頁實現代碼

2019-11-04 13:51php技術網 PHP教程

PHP 利用 Curl Functions 可以完成各種傳送文件操作,比如模擬瀏覽器發送GET,POST請求等等。

受限于php語言本身不支持多線程,所以開發爬蟲程序效率并不高,這時候往往需 要借助Curl Multi Functions 它可以實現并發多線程的訪問多個url地址。既然 Curl Multi Function如此強大,能否用 Curl Multi Functions 來寫并發多線程下載文件呢,當然可以,下面給出我的代碼: 

代碼1:將獲得的代碼直接寫入某個文件 

復制代碼代碼如下:


<?php 
$urls = array( 
'http://www.sina.com.cn/', 
'http://www.sohu.com/', 
'http://www.163.com/' 
); // 設置要抓取的頁面URL 

$save_to='/test.txt'; // 把抓取的代碼寫入該文件 

$st = fopen($save_to,"a"); 
$mh = curl_multi_init(); 

foreach ($urls as $i => $url) { 
$conn[$i] = curl_init($url); 
curl_setopt($conn[$i], CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)"); 
curl_setopt($conn[$i], CURLOPT_HEADER ,0); 
curl_setopt($conn[$i], CURLOPT_CONNECTTIMEOUT,60); 
curl_setopt($conn[$i], CURLOPT_FILE,$st); // 設置將爬取的代碼寫入文件 
curl_multi_add_handle ($mh,$conn[$i]); 
} // 初始化 

do { 
curl_multi_exec($mh,$active); 
} while ($active); // 執行 

foreach ($urls as $i => $url) { 
curl_multi_remove_handle($mh,$conn[$i]); 
curl_close($conn[$i]); 
} // 結束清理 

curl_multi_close($mh); 
fclose($st); 
?> 


代碼2:將獲得的代碼先放入變量,再寫入某個文件 

復制代碼代碼如下:


<?php 
$urls = array( 
'http://www.sina.com.cn/', 
'http://www.sohu.com/', 
'http://www.163.com/' 
); 

$save_to='/test.txt'; // 把抓取的代碼寫入該文件 
$st = fopen($save_to,"a"); 

$mh = curl_multi_init(); 
foreach ($urls as $i => $url) { 
$conn[$i] = curl_init($url); 
curl_setopt($conn[$i], CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)"); 
curl_setopt($conn[$i], CURLOPT_HEADER ,0); 
curl_setopt($conn[$i], CURLOPT_CONNECTTIMEOUT,60); 
curl_setopt($conn[$i],CURLOPT_RETURNTRANSFER,true); // 設置不將爬取代碼寫到瀏覽器,而是轉化為字符串 
curl_multi_add_handle ($mh,$conn[$i]); 


do { 
curl_multi_exec($mh,$active); 
} while ($active); 

foreach ($urls as $i => $url) { 
$data = curl_multi_getcontent($conn[$i]); // 獲得爬取的代碼字符串 
fwrite($st,$data); // 將字符串寫入文件。當然,也可以不寫入文件,比如存入數據庫 
} // 獲得數據變量,并寫入文件 

foreach ($urls as $i => $url) { 
curl_multi_remove_handle($mh,$conn[$i]); 
curl_close($conn[$i]); 


curl_multi_close($mh); 
fclose($st); 
?> 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 成年人免费在线看的惊悚动作片 | 国产精品久久久久不卡绿巨人 | 婷婷草| 欧美 国产 日韩 第一页 | xxxx意大利xxxxhd | 免费看男人狂躁女人 | 2021最新国产成人精品视频 | 香蕉久久久久久狠狠色 | 9久热久爱免费精品视频在线观看 | 久久伊人精品青青草原2021 | 亚洲男人的天堂网 | 操穴勤 | 波多野结衣教师未删减版 | 91理论片午午伦夜理片久久 | 18岁的老处女 | 天天做天天爱天天一爽一毛片 | 国产成人精品一区二三区 | 亚洲啊v天堂 | 国产第7页| 女主被当众调教虐np | 亚洲琪琪 | 亚洲午夜精品久久久久久人妖 | 日本深夜视频 | 亚洲AV国产精品无码精 | 男人天堂久久 | 日本高清全集免费观看 | www亚洲视频| 亚洲日韩精品欧美一区二区一 | 窝窝午夜精品一区二区 | 男人的天堂在线观看视频不卡 | 国产免费一区不卡在线 | 99久久中文字幕伊人 | 图片专区小说专区卡通动漫 | 王淑兰李思雨李铁柱乡村小说免费 | avove本人照片 | 久久免费看少妇高潮A片JA | 国产在线极品 | 波多野结衣中文丝袜字幕 | 国产亚洲精品第一综合另类 | 狠狠婷婷综合缴情亚洲 | 热热99 |