【问题标题】:MSXML2.XMLHTTP error for google translate due to CAPTCHA由于验证码导致谷歌翻译的 MSXML2.XMLHTTP 错误
【发布时间】:2015-06-19 01:36:50
【问题描述】:

一段时间以来,我一直在使用 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 已正确创建,并且已将其输入浏览器并获得了积极的结果。我发现的唯一问题是,在第一次尝试进入浏览器时,我被带到了一个验证码页面以验证我的存在。当我调用翻译函数时,这会产生一个问题。有没有办法解决这个问题?

在函数执行期间使用创建的 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 如果您在浏览器中输入此内容,您可能会收到验证码响应。这个网址只是日文hello的翻译。

【问题讨论】:

    标签: excel google-translate msxml vba


    【解决方案1】:

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

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

    免费:

    付费

    • Gengo API(付费,0.05 美元/字)
    • SpeakLike(已付费,0.05 美元/字或预付费批量包裹)

    网站ProgrammableWeb has 60+ results for translation APIs,您(希望)可以在其中找到适合您需求的内容。

    在列出的所有内容中,如果您希望它是免费的,微软翻译似乎是赢家。你知道这个名字,它有据可查、可靠等等。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-10-10
        • 2020-09-26
        • 1970-01-01
        • 2012-09-16
        • 2018-07-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多