CURL データ収集に基づく単一ページ並列収集関数 get_htmls の使用_PHP チュートリアル
最初の記事でget_html()を使って簡単なデータ収集を実装します。データは1つずつ収集するので、1ページを1秒とすると、送信時間は全ページのダウンロード時間となります。秒。幸いなことに、curl には並列処理機能も備わっています。
並列収集の関数を作成するには、まず、収集するページの種類と、収集されたページに対してどのようなリクエストを使用するかを理解する必要があります。その後、比較的一般的に使用される関数を作成できます。
機能要件分析:
何を返す?
もちろん、各ページのhtmlは配列にまとめられています
どのようなパラメータが渡されますか?
get_html() を作成するときに、オプション配列を使用してより多くのcurlパラメータを渡すことができることがわかりました。そのため、複数のページに対して同時にコレクション関数を作成する機能は保持する必要があります。
パラメータの種類は何ですか?
Web ページの HTML をリクエストする場合でも、インターネット API インターフェイスを呼び出す場合でも、get と post によって渡されるパラメータは常に同じページまたはインターフェイスをリクエストしますが、パラメータは異なります。パラメータのタイプは次のようになります:
get_htmls($url,$options);
$url は文字列です
$options は 2 次元配列であり、各ページのパラメータは配列です。
この場合、問題は解決されたようです。しかし、curlマニュアルを隅々まで調べてみましたが、getパラメーターがどこに渡されるのかわかりませんでした。そのため、配列の形式で$urlを渡し、メソッドパラメーターを追加することしかできません
関数のプロトタイプが決定されます: get_htmls($urls,$options = array, $method = 'get'); コードは次のとおりです:
function get_htmls($urls, $options = array(), $method = 'get'){
$mh =curl_multi_init();
if($method == 'get'){//get メソッドは値を渡すために最もよく使用されます
Key = & gt; $ url) {
$ options [Curlopt_returntransfer] = true; $ CURLS [ $key; ] = $ch;
curl_multi_add_handle($mh, $curls[$key]){
$option[CURLOPT_POST] = true;
curl_setopt_array($ch, $option);
$curls[$ key] = $ch; }
do {
$mrc =curl_multi_exec($mh,$active);
curl_multi_select($mh);//CPU 負荷を下げるには、CPU 負荷をコメントアウトします
$mrc = ;$ch){
$html =curl_multi_getcontent($ch); curl_multi_remove_handle($mh,$ch); ‐ curl_multi_close($mh );
return $htmls;
}
一般的に使用される get リクエストは、URL パラメーターを変更することによって実装されます。これは、この関数がデータ収集を目的としているためです。カテゴリ別に収集する必要があるため、URL は次のようになります:
http://www.baidu.com/s?wd=shili&pn=0&ie=utf-8
http://www.baidu.com/s?wd=shili&pn=10&ie=utf-8
http://www.baidu.com/s?wd=shili&pn=20&ie=utf-8
http://www.baidu.com/s?wd=shili&pn=30&ie=utf-8
http://www.baidu.com/s?wd=shili&pn=50&ie=utf-8
上記の 5 つのページは非常に規則的で、pn の値のみが変化します。
$urls = array();
for($i=1; $i<=5; $i++){
$urls[] = 'http://www.baidu.com/s?wd=shili&pn='.(($i-1)*10).'&ie=utf-8';
}
$option[CURLOPT_USERAGENT] = 'Mozilla/ 5.0 (Windows NT 6.1; rv:19.0) Gecko/20100101 Firefox/19.0';
$htmls = get_htmls($urls,$option);
foreach($htmls as $html){
echo $html;//HTML を取得ここで続行できます データ処理されました
}
一般的な投稿リクエストのシミュレーション:
次のように post.php ファイルを作成します:
if(isset($_POST['username']) && isset($_POST['password'] )){
echo 'ユーザー名は: '.$_POST['username']。' パスワードは: '.$_POST['password'];
}else{
echo 'リクエストエラー!';
次に、次のように呼び出します:
for($ i=1; $i $option[CURLOPT_POSTFIELDS] = 'username=user'.$i.'&password=pass'.$i;
$options[] = $option;
}
$htmls = get_htmls($url,$options,'post');
foreach($htmls as $html){
echo $html;//ここで HTML を取得すると、データ処理を実行します
}
このように get_htmls 関数は基本的にいくつかのデータ収集関数を実装できます
今日の共有はここまでです。うまく書かれていなかったり、わかりにくかったりする場合は、アドバイスをお願いします
http://www.bkjia.com/PHPjc/326892.html

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









HTML の表の境界線に関するガイド。ここでは、HTML でのテーブルの境界線の例を示しながら、テーブル境界線を定義する複数の方法について説明します。

HTML マージン左のガイド。ここでは、HTML margin-left の概要とその例、およびそのコード実装について説明します。

これは、HTML でのネストされたテーブルのガイドです。ここでは、テーブル内にテーブルを作成する方法をそれぞれの例とともに説明します。

HTML テーブル レイアウトのガイド。ここでは、HTML テーブル レイアウトの値と例および出力について詳しく説明します。

HTML 入力プレースホルダーのガイド。ここでは、コードと出力とともに HTML 入力プレースホルダーの例について説明します。

HTML でのテキストの移動に関するガイド。ここでは、概要、マーキー タグが構文でどのように機能するか、および実装例について説明します。

HTML オンクリック ボタンのガイド。ここでは、それらの紹介、動作、例、およびさまざまなイベントでの onclick イベントについてそれぞれ説明します。
