ホームページ  >  記事  >  バックエンド開発  >  PHPでWebページをクロールするにはどのような方法がありますか?

PHPでWebページをクロールするにはどのような方法がありますか?

王林
王林オリジナル
2021-09-02 15:43:146014ブラウズ

Web ページをクロールするための PHP メソッドには次のものがあります: 1. file() 関数; 2. file_get_contents() 関数; 3. fopen()->fread()->fclose モード; 4.curl メソッド; 5. fsockopen() 関数。

PHPでWebページをクロールするにはどのような方法がありますか?

#この記事の動作環境: Windows10 システム、php 7.1、thinkpad t480 コンピューター。

開発作業を行うときは、通常、Web ページ ファイルを取得する必要があります。通常、PHP を使用してブラウザ アクセスをシミュレートし、http リクエストを通じて URL アドレスにアクセスし、HTML ソース コードまたは XML データを取得します。 。ただし、データを取得した後に直接出力することはできないため、データをよりわかりやすく表示するためにコンテンツを抽出し、フォーマットする必要があることがよくあります。

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

1. PHP クロール ページの主なメソッド:

1. file() 関数

2. file_get_contents() 関数

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

4.curl メソッド

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

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

1. file() 関数

<?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( )Function

file_get_contents を使用し、fopen には、allow_url_fopen を有効にするためのスペースが必要です。方法: php.ini を編集し、allow_url_fopen = On に設定します。allow_url_fopen がオフになると、fopen も file_get_contents もリモート ファイルを開くことができなくなります。

<?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() モード

<?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 を使用するには、curl を開くためのスペースが必要です。方法: Windows では php.ini を変更し、extension=php_curl.dll の前のセミコロンを削除し、ssleay32.dll と libeay32.dll を C:\WINDOWS\system32 にコピーします。Linux では、curl 拡張機能をインストールします。

<?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 を通じて。

<?php
$fp = fsockopen("t.qq.com", 80, $errno, $errstr, 30);
if (!$fp) {
    echo "$errstr ($errno)<br />\n";
} else {
    $out = "GET / HTTP/1.1\r\n";
    $out .= "Host: t.qq.com\r\n";
    $out .= "Connection: Close\r\n\r\n";
    fwrite($fp, $out);
    while (!feof($fp)) {
        echo fgets($fp, 128);
    }
    fclose($fp);
}

第17回PHP中国語ウェブサイトオンラインクラスが正式に始まりました(

phpトレーニング)! PHP プログラミングが好きな友達は、急いでサインアップしてください。

以上がPHPでWebページをクロールするにはどのような方法がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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