-1

我有这个简单的解析器,我正试图让它工作。但是我收到致命错误:在第 8 行错误的 /home4/msaraiva/public_html/test.php 中的非对象上调用成员函数 find() 错误,每个都在第一个。但是:在这个网址上http://jantes.rupteur.com/jantes-alu/Alfa-Romeo-145(只有 78 条记录)效果很好,但是当我去http://jantes.rupteur.com/jantes- alu/Alfa-Romeo-159有 399 条记录,解析器将我带到一个致命错误,我尝试了一切,但它不起作用。PS:所有页面都有相同的html结构

谢谢大家

<?php
 include_once('simple_html_dom.php');

    $html=file_get_html("http://jantes.rupteur.com/jantes-alu/Alfa-Romeo-145");

 foreach ($html ->find('td[valign=top]') as $t){
       foreach ($t ->find('h1') as $k)
          foreach ($t ->find('strong') as $g)
            echo $k;
            echo $g .'<br>';
       foreach ($html ->find('td[valign=top]') as $f)
           $num = explode('/>',$f);
           echo strip_tags($num[1]);           
 }
 echo '<br>';
 ?>
4

2 回答 2

1

可能会发生这种情况,因为默认情况下,如果您正在解析的 html 代码长度大于 600000,则file_get_html函数会返回。您的第二页非常大,因此请增加simple_html_dom.php 文件中的常量。falseMAX_FILE_SIZE

define('MAX_FILE_SIZE', 9999999);

听听@PeeHaa 和@Chris 的评论:没有什么可以被“遗忘”

于 2013-03-05T18:51:58.217 回答
0

以防万一有人遇到这个

function get_data($url)
{
  $ch = curl_init();
  $timeout = 5;
  curl_setopt($ch,CURLOPT_URL,$url);
  curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
  curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
  $data = curl_exec($ch);
  curl_close($ch);
  return $data;
}

$url = "your url";

$htmlraw = "";
// this is the important bit (curl function is irrelevant)
$htmlraw = get_data($url); 
// use the str_get_html function instead.
$html = str_get_html($htmlraw);

希望对某人有所帮助!

于 2013-08-21T09:07:23.133 回答