DC娱乐网

VBA信息获取与处理利用XMLHTTP抓取汉英在线翻译的结果

《VBA信息获取与处理》教程(版权10178984)是我推出第六套教程,目前已经是第一版修订了。这套教程定位于最高级,是

《VBA信息获取与处理》教程(版权10178984)是我推出第六套教程,目前已经是第一版修订了。这套教程定位于最高级,是学完初级,中级后的教程。这部教程给大家讲解的内容有:跨应用程序信息获得、随机信息的利用、电子邮件的发送、VBA互联网数据抓取、VBA延时操作,剪贴板应用、Split函数扩展、工作表信息与其他应用交互,FSO对象的利用、工作表及文件夹信息的获取、图形信息的获取以及定制工作表信息函数等等内容。程序文件通过32位和64位两种OFFICE系统测试。是非常抽象的,更具研究的价值。

教程共两册,二十个专题。今日分享内容是VBA信息获取与处理专题六第三节 利用XMLHTTP抓取汉英在线翻译的结果

【分享成果,随喜正能量】日子是活给自己看的,不是来源于别人的指指点点;日子是活给时光看的,别让时光的压力把咱压得喘不过气来。这社会上总有一些人,尽管自己过的磕磕碰碰,却每天热衷于他家的长短。

专题六第三节 利用XMLHTTP抓取汉英在线翻译的结果

在利用VBA进行网抓数据的时候,利用XMLHTTP方法确实是一种非常方便的方案,按照我对VBA的理解“VBA是实现个人小型办公自动化的有效手段”,在网络数据和EXCEL表格相结合的时候,更能体现出VBA的实用主义。这种寄生的语言正是一个桥梁,让网络的数据可以近距离的来到我们使用的现场。

今日这节我给大家讲解利用XMLHTTP方法实现关键词的即时翻译,并给出结果在单元格中。这讲的内容也是我们在工作中可以用到的,当我们需要翻译一些词语,就可以利用这些方法。关键是这种方案的好处可以把翻译的结果直接实现在EXCEL工作表中,避免了大量的复制粘贴的过程,可以提高我们的工作效率。下面看我们这节的内容。

实现场景:在工作表中有一组关键词我们要实现网络的翻译,并把结果放到对应的单元格中。如下图,要求是当我们点击运行按钮时,即刻可以实现翻译。

1 应用XMLHTTP实现抓取汉英翻译结果的思路分析

网络上可以实现翻译网站有很多,这一讲我们采用“http://fanyi.youdao.com/translate” 。

为了分析方便,我们先在提示的网址内录入数据,看看翻译的结果。如下截图:

在上一节中我们利用的是GET提交数据,这一讲我们提交数据的时候采用POST方法. 实际上POST向指定资源提交数据进行处理请求(例如提交表单或者上传文件)时,数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改。这一点不同于GET方法,GET只是请求指定的页面信息,并返回实体主体。

在请求头部的时候,我们利用:

.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"

其中Content-Type:用于定义网络文件的类型和网页的编码,决定浏览器将以什么形式、什么编码读取这个文件,这就是经常看到一些 网页点击的结果却是下载一个文件或一张图片的原因。Content-Type 标头告诉客户端实际返回的内容的内容类型。

application/x-www-form-urlencoded :

最后在返回的responseText中进行数据的提取即可。

2 应用XMLHTTP实现抓取汉英翻译结果的代码实现过程

为了实现上述的思路,我给出了下面的代码:

Sub myNZB() '利用VBA提取抓取汉英在线翻译的结果

Dim objXMLHTTP As Object

Sheets("SHEET2").Select

Range("B2:B" & Cells(Rows.Count, 1).End(xlUp).Row).ClearContents

Set objXMLHTTP = CreateObject("MSXML2.XMLHTTP")

strURL = "http://fanyi.youdao.com/translate"

With objXMLHTTP

For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row

'post 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。

'POST 请求可能会导致新的资源的建立和/或已有资源的修改。不同于GET.get是请求指定的页面信息,并返回实体主体。

.Open "POST", strURL, False

'请求头部

'Content-Type,用于定义网络文件的类型和网页的编码,决定浏览器将以什么形式、什么编码读取这个文件,

'这就是经常看到一些 网页点击的结果却是下载一个文件或一张图片的原因。Content-Type 标头告诉客户端实际返回的内容的内容类型。

'application/x-www-form-urlencoded :

'form表单数据被编码为key/value格式发送到服务器(表单默认的提交数据的格式)

.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"

.send "i=" & Cells(i, 1) & "&from=AUTO&to=AUTO&doctype=json"

strText = .responseText

Cells(11, 2) = strText

Cells(i, 2) = Split(Split(strText, "tgt"":""")(1), """}")(0)

Next i

End With

Set objXMLHTTP = Nothing

MsgBox "OK!"

End Sub

代码的截图:

由于在代码中我给出了大部分的注释,这里就不再进行代码的讲解了,大家要反复的看这几个专题的讲解,才能熟悉相关的知识点。

3 应用XMLHTTP实现抓取汉英翻译结果的实现结果

我们点击运行按钮,查看一下翻译的结果:

总体来说还是可以接受的。大家要注意的是这些翻译的结果来自网络.

另外,在代码中我给出的设置是“from=AUTO&to=AUTO&doctype=json" 下面我给出了一句英语看看可否能比较准确的翻译呢:如下图:

同样也得到了比较正确的结果。

本节知识点回向:GET提交数据和POST提交数据有何不同?如何设置浏览器读取数据?如何利用XMLHTTP反馈网页中的翻译数据?

本讲参考程序文件:006工作表.XLSM

我20多年的VBA实践经验,全部浓缩在下面的各个教程中,教程学习顺序: