zoukankan      html  css  js  c++  java
  • Node.js爬虫抓取数据 -- HTML 实体编码处理办法

    cheerio DOM化并解析的时候

    1.假如使用了 .text()方法,则一般不会有html实体编码的问题出现

    2.如果使用了 .html()方法,则很多情况下(多数是非英文的时候)都会出现,这时,可能就需要转义一番了

    类似这些 因为需要作数据存储,所有需要转换

    Халк крушит. Новый способ исполнен

    大多数都是&#(x)?w+的格式

    所以就用正则转换一番

    var body = ....//这里就是请求后获得的返回数据,或者那些 .html()后获取的
    
    //一般可以先转换为标准unicode格式(有需要就添加:当返回的数据呈现太多\u 之类的时)
    body=unescape(body.replace(/\u/g,"%u"));
    //再对实体符进行转义
    //有x则表示是16进制,$1就是匹配是否有x ,$2就是匹配出的第二个括号捕获到的内容,将$2以对应进制表示转换
    body = body.replace(/&#(x)?(w+);/g,function($,$1,$2){
                    return String.fromCharCode(parseInt($2,$1?16:10));
                 });

    ok ~

    当然了,网上也有很多个转换的版本,适用的就行了

    后记:

    当使用爬虫抓取网页数据时,cheerio模块是经常使用到底,它像jq那样方便快捷

    (但有些功能并未支持或者换了某种形式,比如 jq的 jQuery('.myClass').prop('outerHTML') ,cheerio则等价于 jQuery.html('.myClass') http://www.mgenware.com/blog/?p=2514 )

  • 相关阅读:
    Oracle8i安装问题
    c# 值類型與引用類型
    C# String轉成FontStyle
    为GridView“删除”列添加确认对话框(轉)
    c# 輸出字符編碼
    了解C#命名空間
    Asp.Net安全控件說明
    C# 数组学习
    c# 方法的參數傳遞機制
    c# 得到所有XmlElement節點的值
  • 原文地址:https://www.cnblogs.com/imwtr/p/4614297.html
Copyright © 2011-2022 走看看