シリーズなので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);
これも普通に収集できます
http://www.bkjia.com/PHPjc/326895.htmlwww.bkjia.com本当http://www.bkjia.com/PHPjc/326895.html技術記事このシリーズは 1 日や 2 日では終わることができないため、1.curl データ収集シリーズの単一ページ収集関数 get_html 2.複数ページのcurl データ収集シリーズの概要を 1 つずつ公開します。 ..