简单的html dom php返回带有find的空数组

时间:2014-03-07 20:11:20

标签: php html dom web-scraping

我正在尝试从外部html文件中的div中挑选内容。这是html代码

<some html>
    {<div id="responseDiv" style="display:none">




    required content
    </div>
</some html>

这是我正在使用的PHP代码

include_once('simple_html_dom.php');
$curl_h = curl_init('http://www.example.com/');

curl_setopt($curl_h, CURLOPT_HTTPHEADER,
array(
    'User-Agent: NoBrowser v0.1 beta',
)
);

curl_setopt($curl_h, CURLOPT_RETURNTRANSFER, true);

$handle = curl_exec($curl_h);

$html = str_get_html('$handle');
$ret = $html->find('div[id=DivID]'); 
   foreach ($ret as $post)
  {
    echo $post->outertext;
      }

我检查周围,发现$ ret本身是一个空数组。我试过玩其他div ID等但都是相同的结果。我做错了什么?

2 个答案:

答案 0 :(得分:2)

此:

$html = str_get_html('$handle');

应该是:

$html = str_get_html($handle);
                     ^--   ^-- no quotes

'将其转换为字符串,不插入变量。因此,您需要提供文字$ha等等作为您的html文档,而不是您刚刚通过curl检索的HTML。

答案 1 :(得分:0)

ajax是你的选择吗?

如果是这样的话:

    $.ajax({
        type:"GET",
        url:"path/to/file.html",
        dataType:"html",
        success:function(data) {
            var out = "";
            $(data).find("#div.id.you.want.to.fetch").each(function(loop, item){
                out += $(item).html();
            });
            data = out;
            $("#responseDiv").html(data);
        },
        error:function() {
            alert("Error");
        }
    });

.each()就在那里,所以你可以用它而不是ID