首页 > 后端开发 > 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);
登录后复制

注释:

  • 此版本使用 DOM 解析,比 RegEx 解析更稳健。
  • 它处理相对正确的 URL。
  • 它采用深度控制来防止无限循环。
  • 输出将回显到 STDOUT,允许您将其重定向到文件。

以上是如何构建 PHP 网络爬虫以从多个链接收集数据?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板