ホームページ  >  記事  >  バックエンド開発  >  PHPでリダイレクトされたWebページのソースコードを読む方法

PHPでリダイレクトされたWebページのソースコードを読む方法

PHPz
PHPzオリジナル
2023-03-31 09:05:091548ブラウズ

PHP は、開発者が動的な Web アプリケーションを作成するのに役立つ、広く使用されているサーバーサイド スクリプト言語です。ただし、PHP 開発者は、ジャンプ リンクである可能性のある外部 Web ページのソース コードを読み取る必要がある場合があります。この記事では、PHP を使用してリダイレクト リンクのソース コードを読み取る方法を学びます。

注: この記事では、読者がすでに PHP 言語に精通しており、HTML および HTTP プロトコルの基本を理解していることを前提としています。

ステップ 1: cURL を使用してリンクを開く

cURL は、PHP で URL を処理するために使用されるライブラリです。リンクされた Web ページのソース コードを読み取るには、cURL を使用してリンクを開く必要があります。以下は、cURL を使用して PHP で Web ページを開くための基本的なコードです:

$url = 'http://www.example.com';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$output = curl_exec($ch);
curl_close($ch);

上記のコードでは、最初に読み取る Web ページのリンク アドレスを定義し、次に cURL ハンドルを作成し、アクセスリンクオプションを指定してcURLリクエストを送信し、応答結果を取得します。結果は $output 変数に保存されます。

ステップ 2: ジャンプ リンクを処理する

場合によっては、開いたリンクがジャンプ リンクである可能性があります。これは、別のリンクにリダイレクトされることを意味します。リダイレクトされた Web ページのソース コードを取得するには、応答ヘッダー情報をチェックして、Location ヘッダーがあるかどうかを判断する必要があります。存在する場合、これはジャンプ リンクであることを意味し、リダイレクトされたリンクのアドレスは Location に格納されます。ソース コードを取得するには、cURL を使用してこのリダイレクトされたリンクを開いてください。

以下はコード例です:

$url = 'http://www.example.com';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$output = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);

if ($info['http_code'] == 301 || $info['http_code'] == 302) {
    $url = $info['redirect_url'];
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $output = curl_exec($ch);
    curl_close($ch);
}

上記のコードでは、curl_setopt オプション: CURLOPT_FOLLOWLOCATION を追加しました。このオプションは、cURL にリダイレクトに従い、新しいリンクを自動的に開くように指示します。次に、レスポンスヘッダ情報を取得し、リダイレクト情報があるかどうかを判断します。存在する場合は、curl_init() 関数を使用して新しい cURL ハンドルを作成し、リダイレクト リンクを開いて、ソース コードを取得します。

ステップ 3: ソース コードを解析する

Web ページのソース コードを取得したら、データを処理できるようにさらに解析する必要があります。 PHP の組み込み DOMDocument クラスを使用して HTML ドキュメントを解析できます。

以下はコード例です:

$url = 'http://www.example.com';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$output = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);

if ($info['http_code'] == 301 || $info['http_code'] == 302) {
    $url = $info['redirect_url'];
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $output = curl_exec($ch);
    curl_close($ch);
}

$doc = new DOMDocument();
@$doc->loadHTML($output);
$elements = $doc->getElementsByTagName('html');
$title = $doc->getElementsByTagName('title')->item(0)->nodeValue;

上記のコードでは、最初に DOMDocument オブジェクトを作成し、次に、loadHTML() 関数を呼び出して、取得した Web ページのソース コードを次のように渡します。パラメータ。次に、getElementsByTagName() 関数を使用して指定された要素を取得し、nodeValue 属性を使用して要素のテキスト コンテンツを取得します。この例では、HTML 要素と title 要素を取得します。

ステップ 4: データを処理する

最後に、取得したデータを処理し、必要に応じて保存または表示できます。以下は簡単な例です。

$url = 'http://www.example.com';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$output = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);

if ($info['http_code'] == 301 || $info['http_code'] == 302) {
    $url = $info['redirect_url'];
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $output = curl_exec($ch);
    curl_close($ch);
}

$doc = new DOMDocument();
@$doc->loadHTML($output);
$title = $doc->getElementsByTagName('title')->item(0)->nodeValue;
echo "源码标题是:" . $title . "\n";
echo "HTML源码是:" . $output;

上記のコードでは、最初に Web ページのタイトルを取得し、次に HTML ソース コードを直接出力します。

結論

この記事では、PHP を使用してリダイレクトされた Web ページのソース コードを読み取る方法を学びました。 cURL を使用してリンクを開いたり、ジャンプ リンクを処理したり、HTML ドキュメントを解析したり、データを処理したりすることで、ジャンプ リンクの Web ページのソース コードを簡単に読み取ることができます。これは、Web クローラー、データ分析、データ マイニング、その他のシナリオを使用する必要がある場合に非常に便利なスキルです。

以上がPHPでリダイレクトされたWebページのソースコードを読む方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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