使用标签时,撇号错误



我正在尝试在Node.js Web应用程序中获取网站的描述。它似乎工作正常,但是Node.js似乎在NCR字符(http://en.wikipedia.org/wiki/numeric_character_reference)中遇到问题。我对链接抓取器的代码如下所示

getInfo:(url) ->
  errorMessage = 'Invalid Link'
  request(url, (error, response, body)->
    if (!error && response.statusCode == 200)
      handler = new htmlparser.DefaultHandler((err, dom) ->
        if (err)
          res(error: errorMessage)
        else
          imgs = select(dom, 'img')
          titletags = select(dom,'title')
          descripTags = select(dom,'meta')
          filteredTags = _.filter(descripTags,(tag) -> tag.attribs.name? && tag.attribs.name == 'description')
          uri = response.request.uri.href
          mapFunc =(imgSrc) ->
            pattern = /^((http|https|ftp)://)/
            img = imgSrc.attribs.src
            if (!pattern.test(img)) then uri.substring(0,uri.length-1) + img else img
          res(
            images: _.filter(_.map(imgs,mapFunc),(img)-> (img != '')) || []
            title: titletags[0].children[0].raw || ''
            description: if filteredTags.length != 0 then filteredTags[0].attribs.content || '' else ''
          )
      )
      parser = new htmlparser.Parser(handler)
      parser.parseComplete(body)
    else
      res(error: errorMessage)
  )

为例,如果我放入以下URL以获取信息表格(http://www.zdnet.com),则描述将为ZDNet's breaking news, analysis, and research keeps business technology professionals in touch with the latest IT trends, issues and events.。撇号是问题(被表示为'

我的问题是,为什么任何库都不能正确解析有效的html ncr并将其转换为等效字符串,而如果没有解决此问题的方法,是否可以安全地替换所有出现的所有出现NCR正在使用其他库?

我使用的库在下面描述了

request = require 'request'
htmlparser = require 'htmlparser'
select = require('soupselect').select
_ = require 'underscore'

最终使用https://github.com/minchenkov/node-html-ecoder库来解码字符串,效果很好(不确定为什么NODE.JS标准库不don'T HTML默认解码字符串)

相关内容

  • 没有找到相关文章

最新更新