使用简单的html dom解析器导致问题的不一致元素

时间:2015-01-05 09:03:00

标签: php simple-html-dom

我使用simple_html_dom.php抓取以下来源: http://www.forexfactory.com/calendar.php

我正在抓取表格元素 td.event td.actual

问题是,如果你查看源代码,你可以看到td.event都有span元素,我就像这样剥离:

$events = array();
foreach ($html->find('td.event') as $event) {
    foreach($event->find('span') as $e) {
        $events[] = $e->innertext;
    }
}

所以

<td class="event"><span>Spanish Unemployment Change</span></td>

很好地给了我

Spanish Unemployment Change

但是,td.actual元素不一致,有些包含span元素,有些则不包含。 所以问题是,由于这种不一致性,我如何在某些范围内检索文本,而不是在其他范围内检索文本?

例如

<td class="actual">46.9</td>

VS

<td class="actual"> <span class="better">54.0</span> </td>
<td class="actual"> <span class="worse">-64.4K</span> </td>

1 个答案:

答案 0 :(得分:1)

您可以按照以下方式使用plaintext方法:

$actuals = array();

foreach ($html->find('td.actual') as $actual) {
    $actuals[] = $actual->plaintext;
}