PHP无法打开流:HTTP请求失败!找不到HTTP / 1.1 404

时间:2016-06-08 18:12:28

标签: php

我目前正在使用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()

  • 我想我已经想到了一些东西,但在加载页面时会创建一个随机div来触发弹出窗口,除非你删除该div或触发它,否则其他元素不会出现..这可能是什么&# 39;导致我们的问题?

2 个答案:

答案 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.'/');