如何使用 Goutte/Domcrawler 合并 2 条提取数据的文本节点
How to combine the text node of 2 pieces of extracted data using Goutte/Domcrawler
我一直在想办法将两段提取的文本组合成一个结果(数组)。在这种情况下,各种书籍的标题和副标题。
<td class="item_info">
<span class="item_title">Carrots Like Peas</span>
<em class="item_subtitle">- And Other Fun Facts</em>
</td>
我能得到的最接近的是:
$holds = $crawler->filter('span.item_title,em.item_subtitle');
我设法输出了以下内容:
$holds->each(function ($node) {
echo '<pre>';
print $node->text();
echo '</pre>';
});
结果是
<pre>Carrots Like Peas</pre>
<pre>- And Other Fun Facts</pre>
另一个问题是并不是所有的书都有字幕,所以我需要避免将两个标题组合在一起。
我将如何将这两个组合成一个结果(或数组)?
根据Goutte Documentation, Goutte utilizes the Symfony DomCrawler component. Information on adding content to a DomCrawler object can be found atSymfony DomCrawler - Adding Content
就我而言,我采取了迂回的方式到达我想去的地方。我在 DOM 中后退了一级到 td
标签并抓取所有内容并将其转储到数组中。
我意识到 DomCrawler 的文档中有将文本节点放入数组的示例代码。
$items_out = $crawler->filter('td.item_info')->each(function (Crawler $node, $i) {
return $node->text();
});
我试图避免捕获 td
因为作者的也包含在这些单元格中。经过更多挖掘后,我能够使用以下命令从数组中删除作者:
foreach ($items_out as &$items) {
$items = substr($items,0, strpos($items,' - by'));
}
我只花了五天时间就把它全部整理好了。现在进入下一个问题!
我一直在想办法将两段提取的文本组合成一个结果(数组)。在这种情况下,各种书籍的标题和副标题。
<td class="item_info">
<span class="item_title">Carrots Like Peas</span>
<em class="item_subtitle">- And Other Fun Facts</em>
</td>
我能得到的最接近的是:
$holds = $crawler->filter('span.item_title,em.item_subtitle');
我设法输出了以下内容:
$holds->each(function ($node) {
echo '<pre>';
print $node->text();
echo '</pre>';
});
结果是
<pre>Carrots Like Peas</pre>
<pre>- And Other Fun Facts</pre>
另一个问题是并不是所有的书都有字幕,所以我需要避免将两个标题组合在一起。 我将如何将这两个组合成一个结果(或数组)?
根据Goutte Documentation, Goutte utilizes the Symfony DomCrawler component. Information on adding content to a DomCrawler object can be found atSymfony DomCrawler - Adding Content
就我而言,我采取了迂回的方式到达我想去的地方。我在 DOM 中后退了一级到 td
标签并抓取所有内容并将其转储到数组中。
我意识到 DomCrawler 的文档中有将文本节点放入数组的示例代码。
$items_out = $crawler->filter('td.item_info')->each(function (Crawler $node, $i) {
return $node->text();
});
我试图避免捕获 td
因为作者的也包含在这些单元格中。经过更多挖掘后,我能够使用以下命令从数组中删除作者:
foreach ($items_out as &$items) {
$items = substr($items,0, strpos($items,' - by'));
}
我只花了五天时间就把它全部整理好了。现在进入下一个问题!