PHP 言語自体がマルチスレッドをサポートしていないため、クローラ プログラムの開発効率は高くありません。多くの場合、複数のファイルへの同時マルチスレッド アクセスを実現できる Curl Multi Functions を使用する必要があります。 URL アドレス。 Curl Multi Function は非常に強力なので、Curl Multi Function を使用して同時マルチスレッド ファイル ダウンロードを記述することはできますか? もちろん、それは可能です。私のコードを以下に示します:
コード 1: 取得したコードをファイルに直接書き込みます
。 コードをコピーします コードは次のとおりです:
$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 (互換性; 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])
} // クリーンアップを終了
fclose($st); ?>
コード 2: 取得したコードを変数に入れてからファイルに書き込みます
コードをコピーします
コードは次のとおりです: $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(); i => $url) {
$conn[$i] =curl_init($url);
curl_setopt($conn[$i], CURLOPT_USERAGENT, "Mozilla/4.0 (互換性; MSIE 7.0; Windows NT 6.0)") ;
curl_setopt($conn[$i], CURLOPT_HEADER ,0);
curl_setopt($conn[$i],CURLOPT_RETURNTRANSFER,true);ブラウザにクローリング コードを書き込みますが、文字列に変換されます
curl_multi_add_handle ($mh,$conn[$i])
}
do {
curl_multi_exec($mh,$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($st);
http://www.bkjia.com/PHPjc/322228.html
www.bkjia.com
true
http://www.bkjia.com/PHPjc/322228.html
技術記事
PHP 言語自体がマルチスレッドをサポートしていないため、クローラ プログラムの開発効率は高くありません。多くの場合、複数のファイルへの同時マルチスレッド アクセスを実現できる Curl Multi Functions を使用する必要があります。 ...
声明:この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。