我正在使用Simple HTML DOM从我正在抓取的网站中获取元素和值。它工作得很好,但每23,000页左右,我找到了相当于404找不到的页面,其中没有正常的html结构。这会导致我想要在不破坏页面的情况下逃脱致命错误。
以下是完整的错误报告:
致命错误:未捕获错误:在C:\ xampp \ htdocs \ scrape \ simple_html_dom.php中调用null上的成员函数find():1113堆栈跟踪:#0 C:\ xampp \ htdocs \ scrape \ scrape_detailtable.php(133):simple_html_dom-> find(' div [id = detailta ...')#strong {main}抛出 C:\ xampp \ htdocs \ scrape \ simple_html_dom.php 在线 1113
以下是我的脚本中出现错误的行:
$doc = new simple_html_dom($record_content);
if ( ! is_null($doc->find("div[id=detailtable]")) ) // <-- this line
$record_content
是使用cURL检索的html。
我已经尝试了
if( ! isset($doc->find("div[id=detailtable]")) ) ,
if( ! is_null($doc->find("div[id=detailtable]")) ) ,
if( ! empty($doc->find("div[id=detailtable]")) ) , and ,
if( ! $doc->find("div[id=detailtable]") ) ...
...页面不断破碎。我只是想在div [id = detailtable]存在的情况下逃避处理。
2016年6月30日更新
我在尝试不同的转义时遇到了另一个PHP错误,&#34;检测到不为空&#34;方法(也许这是PHP 7的新功能)。最后我尝试了PHP抛出这个建议的东西,以及错误:(释义)&#34;你可以使用null!==表达&#34;
现在我的代码为:if ( null !== $doc->find( 'a' ) ){
布拉赫!仍然得到&#34;未捕获错误:在null&#34;上调用成员函数find()所以我猜null!==表达式并没有真正起作用。
答案 0 :(得分:1)
尝试类似的东西:
$doc = new simple_html_dom($record_content);
if ( $doc ) {
if ( ($find = $doc->find("div[id=detailtable]")) ) {
// do what you want with the $find variable
}
if ( ($find = $doc->find("div[id=detailtable2]")) ) {
// do what you want with the $find variable
}
if ( ($find = $doc->find("div[id=detailtable3]")) ) {
// do what you want with the $find variable
}
}