我正在使用 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>
我可以使用文档中的每个函数 ( here ) 通过遍历 DOM 查找“.foo”类来访问此内容。
$('.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 或类,但它们没有。有没有一种方法可以直接将这些( <br>
)作为获取文本的方式,并以正确的格式检索它(即段落之间有间距)。在此,我必须问那些对cheerio更熟悉和有经验的人,我用这笔特定现金尝试做的事情是否可以用cheerio实现?我愿意寻求其他途径,并欢迎推荐模块/库,这有助于使这项任务变得更容易。
回顾一下:我想检索第二个 <p>
之间的所有文本标签,保持呈现的 HTML 上显示的格式和间距。
提前致谢。
最佳答案
如果您要求 .text()
它会去除格式。如果您请求.html()
,它将返回所有内容,并保留所有标签。
所以改变这个:
fruits[i] = $(this).next().next().text();
对此:
fruits[i] = $(this).next().next().html();
关于node.js - 使用cheerio从没有类的段落标签(<p>)中选择文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37217791/