ホームページ  >  記事  >  バックエンド開発  >  PHP_PHP チュートリアルを使用してページをクロールするいくつかの方法

PHP_PHP チュートリアルを使用してページをクロールするいくつかの方法

WBOY
WBOYオリジナル
2016-07-13 10:38:47721ブラウズ

ネットワーク プログラムを開発する場合、通常、PHP を使用してブラウザ アクセスをシミュレートし、HTTP リクエストを通じて URL アドレスにアクセスし、HTML ソース コードまたは XML データを取得する必要があります。直接表示するには、多くの場合、コンテンツを抽出して、よりわかりやすい方法で表示するためにフォーマットする必要があります。

PHP クロールページのいくつかの方法と原則について簡単に説明しましょう:


1. PHP でページをクロールする主な方法:

1. file() 関数

2. file_get_contents() 関数

3. fopen()->fread()->fclose() モード

4.カールメソッド

5. fsockopen() 関数ソケットモード

6. プラグインを使用します (例: http://sourceforge.net/projects/snoopy/)


2. PHP が HTML または XML コードを解析する主な方法:

1. file() 関数

? 1 2 3 4 5 6 7 8 9 <?php //定义url $url=&#39;http://t.qq.com&#39;;  //fiel函数读取内容数组 $lines_array=file($url);  //拆分数组为字符串  $lines_string=implode(&#39;&#39;,$lines_array);  //输出内容,嘿嘿,大家也可以保存在自己的服务器上 echo $lines_string; 

2. file_get_contents() 関数
file_get_contents と fopen を使用するには、allow_url_fopen を有効にする必要があります。方法: php.ini を編集し、allow_url_fopen = On に設定します。allow_url_fopen がオフの場合、fopen も file_get_contents もリモート ファイルを開くことができません。

? 1 2 3 4 5 6 7 <?php //定义url $url=&#39;http://t.qq.com&#39;; //file_get_contents函数远程读取数据 $lines_string=file_get_contents($url); //输出内容,嘿嘿,大家也可以保存在自己的服务器上 echo htmlspecialchars($lines_string);

3. fopen()->fread()->fclose() モード

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 <?php //定义url $url=&#39;http://t.qq.com&#39;; //fopen以二进制方式打开 $handle=fopen($url,"rb"); //变量初始化 $lines_string=""; //循环读取数据 do{ $data=fread($handle,1024); if(strlen($data)==0) { break; } $lines_string.=$data; }while(true); //关闭fopen句柄,释放资源 fclose($handle); //输出内容,嘿嘿,大家也可以保存在自己的服务器上 echo $lines_string;

4.カール方法
curl を使用するには、curl を有効にするためのスペースが必要です。方法: Windows で php.ini を変更し、extension=php_curl.dll の前のセミコロンを削除し、ssleay32.dll と libeay32.dll を C:WINDOWSsystem32 にコピーします。Linux では、curl 拡張機能をインストールします。

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <?php // 创建一个新cURL资源 $url=&#39;http://t.qq.com&#39;; $ch=curl_init(); $timeout=5; // 设置URL和相应的选项 curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); // 抓取URL $lines_string=curl_exec($ch); // 关闭cURL资源,并且释放系统资源 curl_close($ch); //输出内容,嘿嘿,大家也可以保存在自己的服务器上 echo $lines_string;

5. fsockopen() 関数ソケットモード
ソケット モードが正しく実行できるかどうかは、サーバーの設定にも関係します。具体的には、phpinfo を使用して、サーバーでどの通信プロトコルが有効になっているかを確認できます。

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 <?php $fp = fsockopen("t.qq.com", 80, $errno, $errstr, 30); if (!$fp) { echo "$errstr ($errno)<br />n"; } else {     $out = "GET / HTTP/1.1rn";     $out .= "Host: t.qq.comrn";     $out .= "Connection: Closernrn";     fwrite($fp, $out);     while (!feof($fp)) {         echo fgets($fp, 128);     }     fclose($fp); }

6. スヌーピープラグイン、最新バージョンは Snoopy-1.2.4.zip 最終更新日: 2013-05-30、誰でも使用することをお勧めします

インターネットで人気のスヌーピーを収集に使用します。これは非常に強力な収集プラグインであり、ブラウザー情報をシミュレートするために使用することもできます。

? 1 2 3 4 5 6 7 8 9 10 11 12 <?php //引入snoopy的类文件 require(&#39;Snoopy.class.php&#39;); //初始化snoopy类 $snoopy = new Snoopy; $url = "http://t.qq.com"; //开始采集内容 $snoopy->fetch($url);  //保存采集内容到$lines_string $lines_string = $snoopy->results; //输出内容,嘿嘿,大家也可以保存在自己的服务器上 echo $lines_string;

注: エージェントは Snoopy.class.php ファイルの 45 行目に設定されています。ファイル内で「var $agent」(引用符内の内容) を検索してください。 PHP を使用して取得できるブラウザ コンテンツ
echo $_SERVER['HTTP_USER_AGENT']; を使用してブラウザ情報を取得し、エコーされたコンテンツをエージェントにコピーするだけです。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/735061.html技術記事ネットワーク プログラムを開発する場合、多くの場合、ローカル以外のファイルを取得する必要があります。通常、php を使用してブラウザー アクセスをシミュレートし、http リクエストを通じて URL アドレスにアクセスし、HTML ソース コードを取得します。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。