使用简单 html dom 解析器导致问题的不一致元素
Inconsistent elements causing problems using simple html dom parser
我正在使用 simple_html_dom.php 抓取以下来源:
http://www.forexfactory.com/calendar.php
我正在抓取 table 元素 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>
对
<td class="actual"> <span class="better">54.0</span> </td>
<td class="actual"> <span class="worse">-64.4K</span> </td>
您可以只使用 plaintext
方法,如下所示:
$actuals = array();
foreach ($html->find('td.actual') as $actual) {
$actuals[] = $actual->plaintext;
}
我正在使用 simple_html_dom.php 抓取以下来源: http://www.forexfactory.com/calendar.php
我正在抓取 table 元素 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>
对
<td class="actual"> <span class="better">54.0</span> </td>
<td class="actual"> <span class="worse">-64.4K</span> </td>
您可以只使用 plaintext
方法,如下所示:
$actuals = array();
foreach ($html->find('td.actual') as $actual) {
$actuals[] = $actual->plaintext;
}