显示所有相同的元素简单的HTML DOM解析器

时间:2015-01-05 15:10:26

标签: php html parsing dom web-scraping

我遇到问题,我正在使用Simple HTML DOM Parser解析IMDB网页,我的代码是下一个:

<?php
require('../simple_html_dom.php');

$url = 'http://www.imdb.com/search/name?gender=female';
$html = file_get_html($url);

foreach ($html->find('table.results tbody') as $div) {
    $extractname = $div->find('tr.detailed td.name a', 0);
    $extractimg = $div->find('tr.detailed td.image', 0);
    $name = $extractname->innertext;
    $img = $extractimg->innertext;
    echo $img, $name;
};
?>

这个脚本告诉我:

Link to image

那么我的问题是我不知道为什么我的脚本只返回一个元素,而不是所有元素。

谢谢!

2 个答案:

答案 0 :(得分:1)

您正在获取一个元素,因为该页面上<tbody>只有一个。 您可能希望为每个tr 行获得结果

  

foreach($ html-&gt; find(&#39; table.results tbody tr&#39;)as $ div){}

答案 1 :(得分:0)

我通常使用XPATH来做这样的事情,如果我错了,请原谅我。

对我来说,看起来find()得到一个数组,你应该像在$ html find for tbody标签一样循环$ extractname作为元素数组,并且与$ extractimg相同。 / p>

所以对我来说a)你找到了所有的tbody标签并将它们循环b)在你正在寻找其他元素的每一个内部,这些元素成为他们自己的数组。