使用 cheerio 来 select 来自段落标签 (<p>) 的文本,没有 class

Using cheerio to select text from paragraph tags (<p>) with no class

我正在使用 cheerio (cheeriojs) 从具有以下 HTML 布局的网站抓取内容。

<div class="foo"></div>
<p></p>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do  eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
<br><br>
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
<br><br>
</p>

通过遍历 DOM 寻找“.foo”class,我可以使用文档 (here) 中的每个函数来访问此内容。

$('.foo').each(function(i, el){
 //Do something...
 $(this).next().next().text()
 }

从这里我可以简单地将此内容转换为字符串,并按我的意愿进行检索,但文本以一个未格式化的长字符串形式返回。 (即一篇长篇文章,各段之间没有间距)。有没有什么方法可以在保留格式化内容的同时检索内容?

我尝试了以下操作;

      `var fruits = [];
        
        $('.foo').each(function(i, el){
            fruits[i] = $(this).next().next().text();
      }` 

作为获取当前标签并将其推送到数组的一种方式,但这与我之前的代码没有太大区别。我假设如果 <br> 标签有一些 id 或 classes,这是可能的,但它们没有。有没有一种方法可以直接将这些 (<br>) 作为获取文本的方式,并以正确的格式检索它(即段落之间有间距)。在这个路口,我必须问那些对 cheerio 更熟悉和有经验的人,如果我用这个特定的现金尝试做的事情对 cheerio 来说是否可行?我愿意寻求其他途径,并欢迎 modules/libraries 的建议,这有助于使这项任务变得更容易。

回顾一下:我想检索第二个 <p> 标签之间的所有文本,保持呈现的格式和间距 HTML.

提前致谢。

如果您要求 .text(),它将删除格式。如果您要求 .html(),它将 return 所有内容,保留所有标签。

所以改变这个:

fruits[i] = $(this).next().next().text();

为此:

fruits[i] = $(this).next().next().html();