用于测试页面上所有链接的递归功能

时间:2018-07-05 14:59:49

标签: php web-scraping

我正在编写来自站点(包括子页面)所有站点的刮板链接,并且遇到了一个小问题。我想到了使用递归函数的想法,因为我要扫描的页面具有多个级别。它的结构或多或少是这样的:

Level 1 reference
- Second level reference
-- Third level reference
-- Third level reference
- Second level reference
-- Third level reference
-- Third level reference
-- Third level reference
--- Level four reference

在被测试的链接下是否存在更多或更少的隐藏,这是永远不完全清楚的,因此我想到了递归函数的概念。

它带有指向主页的链接,带有第一个,如果其中的链接数大于一个,则表示该功能相同。

不幸的是,出了点问题,我得到了一块空白的白板,该如何解决?

function scanWebsite($url) {

        $html = file_get_contents($url);
        $dom = new DOMDocument();
        @$dom->loadHTML($html);

        $xpath = new DOMXpath($dom);
        $nodes = $xpath->query("/html/body//a");

        $output = [];

        foreach($nodes as $node) {

            $url = $node->getAttribute("href");

            if(count($nodes) > 1) {

                scanWebsite("http://samplewebsite.com" .$url);

            } else {

                if(preg_match("/\/title\/.*\//", $url)) {

                    array_push($output, $url);

                }

                continue;

            }

        }

        return $output;

    }

    echo '<pre>';
    print_r(scanWebsite("http://samplewebsite.com"));
    echo '</pre>';

0 个答案:

没有答案