将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对象转换为字符串的主要内容,如果未能解决你的问题,请参考以下文章