使用laravel goutte / DOMCrawler选择指定的DOMElement值 - 当前节点列表为空错误

时间:2017-12-31 17:30:46

标签: php laravel goutte domcrawler

我有一个像这样呈现html的页面:

<div class="details">
    <table>
        <tr>
            <th class="field">Title</th>
            <td class="value">Laravel for Noobs</td>
        </tr>
        <tr>
            <th class="field">Type</th>
            <td class="value">PDF Book</td>
        </tr>
    </table>
</div>

我想要做的是遍历每个<tr></tr>并解析<th class="field">???</th><td class="value">???</td>的值。

例如,我想从上面的html生成这样的数组:

$details = [
    ['field' => 'Title', 'value' => 'Laravel for Noobs'],
    ['field' => 'Type', 'value' => 'PDF Book']
];

根据我在文档中看到的内容:

我尝试了以下内容:

$details = [];
$crawler->filter('.details table tr')->each(function ($node) use(&$details) {
    $field = $node->filter('th .field')->first()->text();
    $value = $node->filter('td .value')->first()->text();
    $details[] = [
        'field' => $field,
        'value' => $value
    ];
});

当我尝试上述操作时,出现以下错误:

  

当前节点列表为空。

关于如何实现这一目标的任何想法?在初始过滤后,是否可以进一步过滤节点?

0 个答案:

没有答案