ホームページ  >  記事  >  バックエンド開発  >  CURL データ収集に基づく単一ページ コレクション関数 get_html の使用_PHP チュートリアル

CURL データ収集に基づく単一ページ コレクション関数 get_html の使用_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:11:301083ブラウズ

シリーズなので1日や2日では終わらないので、順次公開していきます

概要:

1.curlデータ収集シリーズ単一ページ収集関数get_html

2.curlデータ収集シリーズ複数ページ並列収集関数get_htmls

3.curlデータ収集系通常処理関数get _matches

4.Curlデータ収集シリーズのコード分割

5.カールデータ収集系列並列ロジック制御関数web_spider


単一ページの収集は、データ収集プロセスで最も一般的に使用される機能です。場合によっては、この収集方法はサーバーのアクセス制限下でのみ使用できます。これは遅いですが、簡単に制御できるため、一般的に使用されるカールを作成することが非常に重要です。関数呼び出し

私たちは Baidu と NetEase に精通しているため、これら 2 つの Web サイトのホームページのコレクションを例として使用します


最も簡単な書き方:

コードをコピーします コードは次のとおりです:

$url = 'http://www.baidu.com';
$ch =curl_init( $url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch,CURLOPT_TIMEOUT,5);
$html =curl_exec($ch);
if($html !== false){
echo $ html;
}

頻繁に使用するため、curl_setopt_array を使用して関数の形式で記述することができます:
コードをコピーします コードは次のとおりです:

function get_html($url, $options = array()){
$options[CURLOPT_RETURNTRANSFER] = true;
$options[CURLOPT_TIMEOUT] = 5;
$ch =curl_init($url);
curl_setopt_array($ch,$options);
$html = curl_exec($ch);
curl_close($ch);
if($html === FALSE) {
return false;
}
return $ html;


コードを次のようにコピーします: $ url = 'http://www.baidu.com';
echo get_html($url);


たとえば、適切なページを取得するには、いくつかの特定のパラメーターを渡す必要がある場合があります。今すぐ NetEase ページを取得するには:


コードをコピーします
コードは次のとおりです:$url = ' http://www.163.com';
echo get_html($url);


何も入っていない空白が表示されます。次に、curl_getinfo を使用して関数を作成し、何が起こるかを確認します:


コードをコピーします
コードは次のとおりです: function get_info($url,$options = array( )){
$options[CURLOPT_RETURNTRANSFER] = true;
$options[CURLOPT_TIMEOUT] = 5;
$ch =curl_init($url);
curl_setopt_array($ch,$options);
$html =curl_exec($ch) ;
$info =curl_getinfo($ch);
curl_close($ch);
return $info;
}
$url = 'http://www.163.com';
var_dump(get_info($url)) ;



http_code 302

リダイレクトが確認できます。この時点で、いくつかのパラメータを渡す必要があります:

コードをコピーします

コードは次のとおりです: $url = 'http://www. 163.com'; $options[CURLOPT_FOLLOWLOCATION] = true;
echo get_html($url,$options);




なぜそのようなページが私たちのコンピュータがアクセスするページと異なるのかがわかるでしょう? ? ?

サーバーがクライアントがどのデバイス上にあるかを判断するにはパラメーターがまだ十分ではないようなので、通常のバージョンが返されます

USERAGENT

コードをコピーする必要があるようです
コードは次のとおりです:

$url = 'http://www.163.com'; $options[CURLOPT_FOLLOWLOCATION] = true; $options[ CURLOPT_USERAGENT] = 'Mozilla/5.0 (Windows NT 6.1; rv:19.0) Gecko/20100101 Firefox/19.0';
echo get_html($url,$options);

OKこれでページが出てきました。基本的にこのget_html関数は基本的にそのような拡張機能を実現できます

もちろん、それを実現する他の方法もあります。NetEase の Web ページが明確にわかっている場合は、単にそれを収集することができます:

コードをコピーします コードは次のとおりです:

$url = 'http:/ /www.163 .com/index.html';
echo get_html($url);

これも普通に収集できます

www.bkjia.com本当http://www.bkjia.com/PHPjc/326895.html技術記事このシリーズは 1 日や 2 日では終わることができないため、1.curl データ収集シリーズの単一ページ収集関数 get_html 2.複数ページのcurl データ収集シリーズの概要を 1 つずつ公開します。 ..

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。