>백엔드 개발 >PHP 문제 >PHP에서 리디렉션된 웹페이지의 소스 코드를 읽는 방법

PHP에서 리디렉션된 웹페이지의 소스 코드를 읽는 방법

PHPz
PHPz원래의
2023-03-31 09:05:091642검색

PHP는 개발자가 동적 웹 애플리케이션을 만드는 데 도움이 되는 널리 사용되는 서버 측 스크립팅 언어입니다. 그러나 때때로 PHP 개발자는 점프 링크일 수 있는 외부 웹 페이지의 소스 코드를 읽어야 합니다. 이 기사에서는 PHP를 사용하여 리디렉션 링크의 소스 코드를 읽는 방법을 알아봅니다.

참고: 이 기사에서는 귀하가 이미 PHP 언어에 익숙하고 HTML 및 HTTP 프로토콜에 대한 기본적인 이해를 가지고 있다고 가정합니다.

1단계: cURL을 사용하여 링크 열기

cURL은 PHP에서 URL을 처리하기 위한 라이브러리입니다. 링크된 웹페이지의 소스 코드를 읽으려면 cURL을 사용하여 링크를 열어야 합니다. 다음은 cURL을 사용하여 PHP에서 웹 페이지를 여는 기본 코드입니다.

$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);

위 코드에서는 먼저 읽을 웹 페이지의 링크 주소를 정의한 다음 cURL 핸들을 생성하고 액세스 옵션을 설정합니다. 링크를 전송하고 cURL 요청을 보내고 응답 결과를 얻습니다. 결과는 $output 변수에 저장됩니다.

2단계: 점프 링크 처리

어떤 경우에는 우리가 여는 링크가 점프 링크일 수 있으며, 이는 다른 링크로 리디렉션된다는 의미입니다. 리디렉션된 웹 페이지의 소스 코드를 얻으려면 응답 헤더 정보를 확인하여 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);
}

위 코드에서는 컬_setopt 옵션인 CURLOPT_FOLLOWLOCATION을 추가했습니다. 이 옵션은 cURL이 리디렉션 메시지를 따르고 자동으로 새 링크를 열도록 지시합니다. 그런 다음 응답 헤더 정보를 얻어 리디렉션 정보가 있는지 확인합니다. 존재하는 경우, 우리는 컬_init() 함수를 사용하여 새로운 cURL 핸들을 생성하고 리디렉션 링크를 열고 소스 코드를 얻습니다.

3단계: 소스 코드 분석

웹페이지의 소스 코드를 얻은 후 데이터를 처리할 수 있도록 추가로 분석해야 합니다. 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() 함수를 호출하여 얻은 웹페이지 소스 코드를 매개변수로 전달합니다. 다음으로, getElementsByTagName() 함수를 사용하여 지정된 요소를 가져오고 nodeValue 속성을 사용하여 요소의 텍스트 콘텐츠를 가져옵니다. 이 예에서는 HTML 요소와 제목 요소를 가져옵니다.

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;

위 코드에서는 먼저 웹페이지 제목을 가져온 다음 HTML 소스 코드를 직접 출력합니다.

결론

이 기사에서는 PHP를 사용하여 리디렉션된 웹페이지의 소스 코드를 읽는 방법을 배웠습니다. cURL을 사용하여 링크 열기, 점프 링크 처리, HTML 문서 구문 분석 및 데이터 처리를 통해 점프 링크에 대한 웹 페이지의 소스 코드를 쉽게 읽을 수 있습니다. 이는 웹 크롤러, 데이터 분석, 데이터 마이닝 및 기타 시나리오를 사용해야 할 때 매우 유용한 기술입니다.

위 내용은 PHP에서 리디렉션된 웹페이지의 소스 코드를 읽는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.