PHP爬虫類の3つの方法

14409 ワード

文書ディレクトリ
  • PHP爬虫類の3つの方法
  • 1. get+file_contents()
  • 2. curl
  • 3. Snoopy

  • PHP爬虫類の3つの方法
    1. get+file_contents()
    定義:
    file_get_contents()関数は、ファイル全体を文字列に読み込みます.
    構文:
    file_get_contents(path,include_path,context,start,max_length)
    パラメータ
    説明
    path
    必要です.読み込むファイルを指定します.
    include_path
    オプション.またincludeでpathでファイルを検索すると、このパラメータを「1」に設定できます.
    context
    オプション.ファイルハンドルの環境を指定します.contextは、ストリームの動作を変更できるオプションです.nullを使用すると無視されます.
    start
    オプション.ファイルの読み込みを開始する場所を指定します.このパラメータはPHP 5.1に新しく追加されたものです.
    max_length
    オプション.読み出したバイト数を指定します.このパラメータはPHP 5.1に新しく追加されたものです.
    インスタンスコード:
      function GetData1($url){
        $datas=file_get_contents($url);//    ,           
        return $datas;
      }
      $url="xxx";
      print_r(GetData1($url));
    

    2. curl
    紹介:
    第2のデータを取得する方法は、curlライブラリを通じて、指定したページにデータを送信することができます(このページには爬虫類の検出メカニズムがありません)、もちろん存在しても影響しない場合は、curlの関数curl_を通じてsetopt($ch,option,value)を偽装します.
    全般的なデータ・コードのキャプチャ:
    このコードはcurlがデータをキャプチャする従来の方法であり、爬虫類を検出していないサイトにのみ適用される.
    function DetData2($url){
    	$ch=curl_init($url);
    	$datas=curl_exec($ch);
    	return $datas;
    }
    

    偽装取得データコード:
    多くのサイトでは爬虫類の検出が行われているため、爬虫類を偽装してからしかデータが得られません.
      function GetData2($url){
        $curl=curl_init($url);
        
        curl_setopt($curl, CURLOPT_URL, $url); //         
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); //             
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1); //       SSL          
        curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); //             
        curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); //         
        curl_setopt($curl, CURLOPT_AUTOREFERER, 1); //     Referer  
        curl_setopt($curl, CURLOPT_POST, 1); //        Post    
        curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // Post        
        curl_setopt($curl, CURLOPT_TIMEOUT, 30); //              
        curl_setopt($curl, CURLOPT_HEADER, 0); //      Header      
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 0); //                
        curl_setopt($curl, CURLOPT_HTTPHEADER, array('Expect:'));
        $tmpInfo = curl_exec($curl); //       
        if (curl_errno($curl)) {  
           echo 'Errno'.curl_error($curl);//      
        }
        
        curl_close($curl);
        return $tmpInfo;
      }
    

    3. Snoopy
    Snoopyは非常に強力なクラスライブラリであり、Snoopyを使用するにはSnoopyをダウンロードする必要があります.phpファイル(ダウンロードリンク)、個位注意私はSnoopyを形容して“強大です”、Snoopyは本当に強大です.
    include("Snoopy.php");//         Snoopy  
    
        function GetData3($url){
          $ch=new Snoopy;
          $ch->agent = "Mozilla/5.0 (Linux; U; Android 8.1.0; zh-CN; Redmi 6 Pro Build/OPM1.171019.019) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.108 UCBrowser/12.5.5.1035 Mobile Safari/537.36";
          $ch->referer="https://m.ting22.com/ting/1547-180.html";
          $ch->fetch($url);
          return $ch->results;//    
        }
    

    このコードは偽装後のコードで、ただ短い数行で、とても爽やかではありませんか、焦らないでもっと爽やかで、Snoopyはまた一部の煩雑な正規表現を免除することができて、Snoopyは自動的にホームページのリンクとテキストの内容を抽出します.
    $snoopy->fetchtext$url;//             
    $snoopy->fetchlinks$url;//           
    $snoopy->fetchform$url; //    
    

    以上は私の爬虫類に対するいくつかの学習の心得で、記録してみんなの学習に供します;