我目前正在使用simple_html_dom.php,这是我第一次发现我遇到了这个问题而且我不确定解决方案(现在已经工作了近两个小时了。)
致命错误:在第12行的/m/viooz.ac.php中调用boolean上的成员函数find()
以上是当我们尝试抓取所请求网站的a
元素时,我们页面上显示的错误会显示以下代码。
$page = (isset($_GET['p'])&&$_GET['p']!=0) ? (int) $_GET['p'] : '';
$html = file_get_html('http://viooz.ac/movies/page/1/');
foreach($html->find('a') as $element) {
print '<br><br>';
echo $url = ''.$element->href;
$html2 = file_get_html($url);
print '<br>';
$link = $html2->find('.cont_display a',0);
print $link = $link->href;
}
现在,我确信网站上有<a href""></a>
个标记我们正在寻找无论我改变什么,它都会一直回复该错误。
simple_html_dom.php中的第75行只是说明了以下内容。
function file_get_html($url, $use_include_path = false, $context=null, $offset = -1, $maxLen=-1, $lowercase = true, $forceTagsClosed=true, $target_charset = DEFAULT_TARGET_CHARSET, $stripRN=true, $defaultBRText=DEFAULT_BR_TEXT, $defaultSpanText=DEFAULT_SPAN_TEXT)
{
// We DO force the tags to be terminated.
$dom = new simple_html_dom(null, $lowercase, $forceTagsClosed, $target_charset, $stripRN, $defaultBRText, $defaultSpanText);
// For sourceforge users: uncomment the next line and comment the retreive_url_contents line 2 lines down if it is not already done.
$contents = file_get_contents($url, $use_include_path, $context, $offset);
// Paperg - use our own mechanism for getting the contents as we want to control the timeout.
//$contents = retrieve_url_contents($url);
if (empty($contents) || strlen($contents) > MAX_FILE_SIZE)
{
return false;
}
// The second parameter can force the selectors to all be lowercase.
$dom->load($contents, $lowercase, $stripRN);
return $dom;
}
警告:除非您有广告块,否则不要查看内容目的地。您将获得大量弹出广告。
编辑:即使更改了网址,它也会返回相同的问题
致命错误:在第18行的/m/viooz.ac.php中调用boolean上的成员函数find()
答案 0 :(得分:1)
当我打开您的链接时(在启用了广告拦截器的Chrome隐身模式下),它确实会提供404.找不到该页面,因此您的错误是预期的。
您似乎缺少一个尾部斜杠。在您的网址上添加一个最终的斜杠,它可以正常工作。
所以:
$html = file_get_html('http://viooz.ac/movies/page/'.$page.'/');
如果您在Chrome中查看view-source:http://viooz.ac/movies/page/1/
,则会看到我认为您希望看到的HTML代码。
我确认file_get_contents('http://viooz.ac/movies/page/1/');
正在为我成功检索HTML。
答案 1 :(得分:0)
你的网址需要一个斜杠,否则你会得到404页面
$html = file_get_html('http://viooz.ac/movies/page/'.$page.'/');