由于CAPTCHA,谷歌翻译的MSXML2.XMLHTTP错误

时间:2015-04-13 16:33:40

标签: excel-vba google-translate msxml vba excel

我一直在使用excel中的公共函数进行基本翻译已有一段时间了。在过去的一周里,我开始接受" #VALUE!"对于结果,我已将其缩小到代码的MSXML2.XMLHTTP部分。这是功能:

Public Function Translate(ByVal strText As String, _
                      Optional ByVal eFrom As eLanguage = auto_detect, _
                      Optional ByVal eTo As eLanguage = english, _
                      Optional ByVal blnPhonetic As Boolean = False) As String

Dim strUrl
Dim strTransText As String
Dim strResult As String
Dim varSplitText As Variant
Dim lngItem As Long
Dim delimitChar As String
delimitChar = Chr(34) & "," 'Chr(34) is the character for "


If strText = "" Then
    Translate = ""
    Exit Function
End If

strText = URLEncode(strText)

strUrl = "http://translate.google.com/translate_a/t?client=s&text={S}&hl=en&sl={F}&tl={T}&multires=1&pc=0&rom=1&sc=1"

strUrl = Replace$(strUrl, "{S}", strText)
strUrl = Replace$(strUrl, "{F}", Split(strSHORTCODES, ",")(eFrom))
strUrl = Replace$(strUrl, "{T}", Split(strSHORTCODES, ",")(eTo))



With CreateObject("MSXML2.XMLHTTP")
    Call .Open("get", strUrl, False)
    Call .Send
    strResult = .responseText
End With


varSplitText = Split(Split(strResult, "]],")(0), "[")


If Not blnPhonetic Then
    For lngItem = 3 To UBound(varSplitText)
        strTransText = strTransText & Split(varSplitText(lngItem), delimitChar)(0)
    Next
Else
    For lngItem = 3 To UBound(varSplitText)
        strTransText = strTransText & Split(varSplitText(lngItem), ",")(2)
    Next
End If
strResult = Replace(strTransText, """", "")


Translate = strResult
End Function

在strURL发送之后发生问题:

With CreateObject("MSXML2.XMLHTTP")
    Call .Open("get", strUrl, False)
    Call .Send
    strResult = .responseText
End With 

我已经验证正确创建了strURL并将其输入浏览器并获得了积极的结果。我发现的唯一问题是,在第一次尝试进入浏览器时,我被带入CAPTCHA页面以验证我的存在。当我调用translate函数时,这会产生一个问题。有没有办法解决这个问题?

在执行函数期间创建的strURL示例: http://translate.google.com/translate_a/t?client=s&text=%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF&hl=en&sl=&tl=en&multires=1&pc=0&rom=1&sc=1 如果您在浏览器中输入此内容,则可能会收到CAPTCHA响应。这个网址只是日语中你好的翻译。

2 个答案:

答案 0 :(得分:1)

如果您无法找到解决CAPTCHA错误的方法(这可能很困难,因为您尝试完成的任务是CAPTCHAs首先存在的原因),您可以考虑下面列出的一些替代方案。

我正在寻找谷歌翻译API的替代品(因为这需要花钱,我相信每100万个字符20美元),而且我确实发现微软提供免费的200万字符/月选项。我还从previous SO question和一些快速的独立研究中找到了其他一些付费选项。

免:

付费

  • Gengo API(付费,$ 0.05 /字)
  • SpeakLike(付费,0.05美元/字或预付费批量套餐)

您(希望)可以找到适合您需求的网站ProgrammableWeb has 60+ results for translation APIs

在列出的所有内容中,如果您想让它免费,Microsoft Translate似乎是赢家。你知道这个名字,它有很好的记录,可靠等等。

答案 1 :(得分:0)

您使用的是实际的网站翻译工具,这不是使用翻译API的正确方法 - 请查看正确的REST API: https://cloud.google.com/translate/v2/