PHP curl mutil 多个地址并保存数据

<?php
// 设置要抓取的页面URL
$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_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) { 
    // 获得爬取的代码字符串
    $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);
?>
分类: