简单的html dom 404错误

时间:2014-05-18 21:28:07

标签: php web-crawler simple-html-dom

嘿伙计们我有这个代码:

<?php

include './simple_html_dom.php';

//this link exists
$teste = new simple_html_dom("http://www.btolinux.com.br/");
echo $teste->original_size."<br>";
if($teste->original_size !== 0){
    $teste->find("html");
}

//At this time I'm forcing get a 404 error link.
$teste = new simple_html_dom("http://www.btolinux.com.br/error/");
echo $teste->original_size."<br>";
if($teste->original_size !== 0){
    $teste->find("html");
}

//Now I'm get the correct link again. Why the error persists?
$teste = new simple_html_dom("http://www.btolinux.com.br/");
echo $teste->original_size."<br>";
if($teste->original_size !== 0){
    $teste->find("html");
}

?>

因此,在我的代码中,当我发现404错误链接时,在使用相同类创建的下一个对象中,错误仍然存​​在。 我该如何解决这个问题?

要尝试此代码,请在http://sourceforge.net/projects/simplehtmldom/files/

中获取Simple_dom_php

4 个答案:

答案 0 :(得分:1)

尝试使用@来避免警告,如下所示:

<?php
//CORRECT
$url = "http://www.btolinux.com.br/";
$html = @file_get_contents($url);
if ($html!='') {
    $teste = new simple_html_dom($url);
    echo 'SIZE: '.$teste->original_size."<br>";    
}


//ERROR
$url = "http://www.btolinux.com.br/error/";
$html = @file_get_contents($url);
if ($html!='') {
    $teste = new simple_html_dom($url);
    echo 'SIZE: '.$teste->original_size."<br>";    
}
?>

答案 1 :(得分:1)

试试这段代码:

<?php
require_once("./simple_html_dom.php");          # simplehtmldom.sourceforge.net

$url="http://www.btolinux.com.br/";
$url404="http://www.btolinux.com.br/error/";

$teste = @file_get_html($url);
if ($teste && $teste->original_size) {
    echo $teste->original_size."<br>\n";
    $html = $teste->find("html");
}

$teste = @file_get_html($url404);
if ($teste && $teste->original_size) {
    echo $teste->original_size."<br>\n";
    $html = $teste->find("html");
}

$teste = @file_get_html($url);
if ($teste && $teste->original_size) {
    echo $teste->original_size."<br>\n";
    $html = $teste->find("html");
}
?>

我的输出是:

61206<br>
61206<br>

答案 2 :(得分:0)

您是否尝试过首先使用file_get_contents()? 例如,如果您使用代码:

<?php
print_r(file_get_contents("http://www.btolinux.com.br/error/"));
?>

您会发现错误,然后您可以尝试抓住它。

答案 3 :(得分:0)

建议:

$teste = new simple_html_dom();
$teste->load_file("http://www.btolinux.com.br/");
...

...或......

$teste = file_get_html("http://www.btolinux.com.br/");