本文共 779 字,大约阅读时间需要 2 分钟。
VBA虽然不是专业爬虫工具,但是Excel删除后续数据处理与分析,所以对于不复杂的网页数据抓取也经常在VBA来实现。
有些时候,在网页中看到的内容,使用浏览器的“审查元素”功能也可以看到的内容,如下图。但是用代码抓取回来就只有如下的字符串,面目全非完全无法认读。
北京天安门
怎么回事呢,这是由于网页中使用了字符的UTF编码,在浏览器中加载页面的时候可以自动转换为中文字符,HTML源码如下。
北京天安门
既然已经抓取到了UTF编码的字符,在VBA是否可以转换为中文呢?VBA中有StrConv
可以实现Unicode转换,通常网页中会使用十六进制的表示形式,所以在VBA中还需要借助工作表函数实现进制转换,可以实现但是有些繁琐。
处理HTML肯定是JavaScript最方便了,在VBA中调用JavaScript实现这个转换就可以了。
Sub JSDemo() Dim strCN, strHex, strNew With CreateObject("MSScriptControl.ScriptControl") .Language = "javascript" strJSCode = "function StrToHex(r){for(var t='',n=0;n
【代码解析】
第3行代码创建ScriptContrl对象。 第4行代码指定语言为JavaScript。 第5行到第8行代码添加两个JavaScript的函数,其中StrToHex
实现字符串转换UTF编码,HexToStr
实现UTF转换为字符串。JavaScript代码就不再讲解了。 第9行指定测试字符串。 第14行输入转换结果,如下图所示。 转载地址:http://pdjl.baihongyu.com/