excel vba 网页数据抓取(北京*敏*感*词*这是怎么回事代码的解析与使用的区别)
优采云 发布时间: 2021-11-09 18:14excel vba 网页数据抓取(北京*敏*感*词*这是怎么回事代码的解析与使用的区别)
虽然VBA不是专业的爬虫工具,但Excel在后续的数据处理和分析方面非常擅长,所以经常在VBA中实现,用于简单的网页数据抓取。有时,您在网页上看到的内容也可以通过浏览器的“评论元素”功能看到,如下图所示。
但是用代码检索到的只是下面的字符串,完全无法识别,完全无法识别。北京*敏*感*词*广场发生了什么?事实上,网页中使用的字符的UTF编码可以在浏览器加载页面时自动转换为中文字符。HTML 源代码如下。
<p>北京*敏*感*词*p> body>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 .AddCode strJSCode strJSCode = "function HexToStr(r){var n='',t=r.replace(';','').split('');for(i=1;i .AddCode strJSCode strCN = "北京*敏*感*词*" strHex = .Run("StrToHex", strCN) strNew = .Run("HexToStr", strHex) End With Debug.Print UCase(strHex) MsgBox "原始字符" & vbTab & strCN & vbNewLine & _ "转换后" & vbTab & strHex & vbNewLine & _ "逆转换" & vbTab & strNewEnd Sub
【代码分析】▼
第三行代码创建 ScriptContrl 对象。
第四行代码指定语言为 JavaScript。
第 5 到 8 行添加了两个 JavaScript 函数。StrToHex 实现了字符串到 UTF 编码的转换,HexToStr 实现了 UTF 到字符串的转换。JavaScript 代码不再解释。
第 9 行指定测试字符串。
在第 14 行输入转换结果,如下图所示。