Web scraping InvalidArgumentException-当前节点列表为空。

Web scraping InvalidArgumentException-当前节点列表为空。,web-scraping,laravel-5.4,goutte,Web Scraping,Laravel 5.4,Goutte,我正在使用goutte sracper来刮取数据,我得到了错误,如InvalidArgumentException-当前节点列表为空。下面是我正在使用的代码 $string = $crawler->filter('div#links.results')->html(); if ( empty( $string ) ) return false; $dom = new \DOMDocument; $state =

我正在使用goutte sracper来刮取数据,我得到了错误,如
InvalidArgumentException-当前节点列表为空。
下面是我正在使用的代码

$string = $crawler->filter('div#links.results')->html();


        if ( empty( $string ) )
         return false;

        $dom = new \DOMDocument;
        $state = libxml_use_internal_errors(true);
        $dom->loadHTML($string);
        libxml_use_internal_errors($state);

        $xp = new \DOMXPath($dom);
        $divNodeList = $xp->query('//div[contains(@class, "results_links_deep")]
                                    [contains(@class, "web-result")]
                               /div[contains(@class, "links_main")]
                                   [contains(@class, "links_deep")]
                                   [contains(@class, "result__body")]');

        $results = [];

        if(count($divNodeList) > 0){


            foreach ($divNodeList as $divNode) {

                $results[] = [
                    trim($xp->evaluate('string(./h2/a[@class="result__a"])', $divNode)),
                    trim($xp->evaluate('string(.//a[@class="result__snippet"])', $divNode)),
                    trim($xp->evaluate('string(.//a[@class="result__url"])', $divNode))
                ];
            }


        } 
我尝试使用下面的解决方案

if ($crawler->filter('div#links.results')->count() > 0 ) {
    $string = $crawler->filter('div#links.results')->html()
}
然后它开始给出另一个错误,如
DOMDocument::loadHTML():作为输入提供的空字符串


有什么建议吗?

您的
过滤器没有返回任何结果。这就是它崩溃的原因。这就是我解决这个问题的方法,添加了一个try-catch

try {
   $string = $crawler->filter('div#links.results')->html()
} catch (\InvalidArgumentException $e) {
    // Handle the current node list is empty..
}