ホームページ  >  記事  >  バックエンド開発  >  PHP は CURL を使用してマルチスレッド Web クローリングを実装します_PHP チュートリアル

PHP は CURL を使用してマルチスレッド Web クローリングを実装します_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 09:55:01887ブラウズ

PHPはCURLを使用してマルチスレッドWebクローリングを実装します

PHPはCurl関数を使用して、ブラウザをシミュレートしてGET、POSTリクエストを送信するなど、さまざまなファイル転送操作を完了します。ただし、PHP言語自体はサポートしていませんマルチスレッドであるため、クローラ プログラムの開発効率は高くありません。現時点では、複数の URL アドレスへの同時マルチスレッド アクセスを実現できる Curl Multi Functions を使用する必要があることがよくあります。 Curl Multi Function は非常に強力なので、Curl Multi Function を使用して同時マルチスレッド ファイル ダウンロードを作成できますか? もちろん、それは可能です。

コード1: 取得したコードをファイルに直接書き込む

?

コード2: 取得したコードをまず変数に入れてからファイルに書き込みます

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

$urls = 配列(

「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]);

} // 初期化

する{

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);

?>

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

$urls = 配列(

「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 (互換性; 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]);

}

する{

curl_multi_exec($mh,$active);

} しながら ($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);

?>

以上がこの記事の全内容ですが、皆さんに気に入っていただければ幸いです。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/993432.html技術記事 PHP は CURL を使用して、マルチスレッド Web ページ クローリングを実装します。PHP は Curl 関数を使用して、ブラウザをシミュレートして GET、POST リクエストを送信するなど、PHP 言語自体によって制限されるさまざまなファイル転送操作を実行します。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。