我有一个脚本可以抓取一些旧的 HTML。它每天大约 1000 页,并且由于某种原因它经常阻塞并抛出以下错误:
PHP Catchable fatal error: Argument 1 passed to DOMXPath::__construct() must be an instance of DOMDocument, null given, called in /var/scraper/autotrader/inc/QueryPath/QueryPath/CSS/DOMTraverser.php on line 417 and defined in /var/scraper/autotrader/inc/QueryPath/QueryPath/CSS/DOMTraverser.php on line 467
起初我以为是调用 htmlqp($html) 时产生了错误,但我将它包装在 try{} 语句中,它没有捕获任何内容:
更新:
我通过使用 @ 来查看脚本何时终止而没有错误,找到了有问题的代码行。就是这一行:
try {
$items = $html->find('.searchResultHeader')->find('.vehTitle'); //this one
} catch (Exception $e) {
var_dump(get_class($e));
echo 'big dump'.$e->getTraceAsString();
}
当它爆炸时,它甚至没有回声“大垃圾场”,所以它似乎真的没有抓住它。
我想知道这是否可能是 QueryPath 的错误处理而不是我自己的错误?