将cheerio对象转换为字符串

Posted

技术标签:

【中文标题】将cheerio对象转换为字符串【英文标题】:Convert cheerio object to string 【发布时间】:2015-10-27 00:23:34 【问题描述】:

我正在从页面中提取元标记:

$ = cheerio.load(html)
metaTags = $('meta')

它工作正常,但我需要 metaTags 数组包含字符串 - 不是 cherrio 的对象,就像这里:

["'/meta'>", ""]

附言我不需要 ' 字符它只是 ***.com 误解

我做了这样的,方法:

toHtml = (el) ->
  return el.html()

但它不起作用:得到空结果(使用地图)

metaTags.map (i, el) -> console.log i.toHtml(el)

【问题讨论】:

html() 返回一个 JQuery 对象的第一个元素的内容。 事实上 Jquery 对象非常接近数组,但它们实际上不是数组。并且 Jquery 对象包含 DOMElement 对象。 @EmrysMyrooin 在 python 中很容易 map(str, page.find_all('div')) 是的,但你这里没有使用 python :-) 【参考方案1】:

这里有一个解决方案:

findMetaTags = (html) ->
  $ = cheerio.load(html)

  metatagsContainer = $('<p>')
  $('meta').each ->
    metatagsContainer.append $(this).clone()

  unless _.isEmpty(metatagsContainer)
    return metatagsContainer.html()

  return

【讨论】:

【参考方案2】:
let arrayOfHTMLstrings = $('meta').toArray().map( (el, index) => el.toString() );

根据cheerio official doc

【讨论】:

【参考方案3】:
var cheerio = require('cheerio')
var html = 'SOME_HTML_STRING'
var $ = cheerio.load(html)
var htmlString = $.html()

【讨论】:

【参考方案4】:

我对这里的所有答案都有疑问。

myNode.html() 在我尝试的很多情况下都没有找到html() 方法。 myNode.toString() 返回[object Object]

最终每次都奏效的是在 Cheerio 本身上使用 html() 方法。

const cheerio = require("cheerio")
cheerio.html( myNode )

这将在循环或其他方式中将任何节点转换为 html 字符串。

【讨论】:

根据其他答案,这应该是 myNode.html()

以上是关于将cheerio对象转换为字符串的主要内容,如果未能解决你的问题,请参考以下文章

如何在 jQuery 中选择特定的 <option> 标签以转换为 Javascript 对象

Jackson 对象和JSON的相互转换

javascript如何将一个字符串转换为一个对象?

json字符串转换成对象,对象为空,如何解决

java将json字符串转换成对象批量存储数据

将数据框转换为rec数组(将对象转换为字符串)