ネットワーク プログラムを開発する場合、通常、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
=
'http://t.qq.com'
;
//fiel函数读取内容数组
$lines_array
=file(
$url
);
//拆分数组为字符串
$lines_string
=implode(
''
,
$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 もリモート ファイルを開くことができません。
<?php
//定义url
$url
=
'http://t.qq.com'
;
//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
=
'http://t.qq.com'
;
//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 拡張機能をインストールします。
<?php
// 创建一个新cURL资源
$url
=
'http://t.qq.com'
;
$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.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
(
'Snoopy.class.php'
);
//初始化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']; を使用してブラウザ情報を取得し、エコーされたコンテンツをエージェントにコピーするだけです。