首頁 > 後端開發 > 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 網路爬蟲:從多個連結取得資料

問題:

。腳本從網頁上的多個連結檢索資料並將其儲存在本機文件中。

答案:

使用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);
登入後複製

註:

  • 此版本使用DOM 解析,比RegEx 解析更穩健。
  • 它處理相對正確的 URL。
  • 它採用深度控制來防止無限循環。
  • 輸出將回顯到 STDOUT,讓您將其重新導向至檔案。

以上是如何建立 PHP 網路爬蟲以從多個連結收集資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板