> 백엔드 개발 > PHP 튜토리얼 > 여러 링크에서 데이터를 수집하기 위해 PHP 웹 크롤러를 구축하는 방법은 무엇입니까?

여러 링크에서 데이터를 수집하기 위해 PHP 웹 크롤러를 구축하는 방법은 무엇입니까?

Susan Sarandon
풀어 주다: 2024-11-08 06:50:02
원래의
521명이 탐색했습니다.

How to Build a PHP Web Crawler to Gather Data from Multiple Links?

PHP 웹 크롤러: 여러 링크에서 데이터 수집

질문:

PHP 만들기 웹 페이지의 여러 링크에서 데이터를 검색하여 로컬 파일에 저장하는 스크립트입니다.

답변:

DOM 및 깊이 제어 사용:

function crawl_page($url, $depth = 5)
{
    static $seen = array();
    if (isset($seen[$url]) || $depth === 0) {
        return;
    }

    $seen[$url] = true;

    $dom = new DOMDocument('1.0');
    @$dom->loadHTMLFile($url);

    $anchors = $dom->getElementsByTagName('a');
    foreach ($anchors as $element) {
        $href = $element->getAttribute('href');
        // Handle relative URLs
        if (0 !== strpos($href, 'http')) {
            $path = '/' . ltrim($href, '/');
            if (extension_loaded('http')) {
                $href = http_build_url($url, array('path' => $path));
            } else {
                $parts = parse_url($url);
                $href = $parts['scheme'] . '://';
                $href .= $parts['host'];
                if (isset($parts['port'])) {
                    $href .= ':' . $parts['port'];
                }
                $href .= dirname($parts['path'], 1).$path;
            }
        }
        crawl_page($href, $depth - 1);
    }

    // Output data
    echo "URL:", $url, PHP_EOL, "CONTENT:", PHP_EOL, $dom->saveHTML(), PHP_EOL, PHP_EOL;
}

// Usage
crawl_page("http://hobodave.com", 2);
로그인 후 복사

참고:

  • 이 버전은 RegEx 구문 분석보다 더 강력한 DOM 구문 분석을 사용합니다.
  • 상대적인 항목을 처리합니다. URL이 올바르게 표시됩니다.
  • 무한 루프를 방지하기 위해 깊이 제어를 사용합니다.
  • 출력은 STDOUT으로 에코되므로 파일로 리디렉션할 수 있습니다.

위 내용은 여러 링크에서 데이터를 수집하기 위해 PHP 웹 크롤러를 구축하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿