Как сослаться и получить результат перевода с нового веб-сайта google translate?(используя VBA) - PullRequest
0 голосов
/ 04 декабря 2018

В настоящее время это код, который я использовал (успешно), чтобы получить результат от Google Translate после загрузки веб-сайта (с созданного URL, который по-прежнему правильно отображает Google Translate) в объекте IE (я не трогал файл в2 дня и пробовал на следующий день после того, как Google обновил свой веб-сайт гугл-переводчика):

Function GetTransItem(IE As Object) As String

Dim strInnerHTML As String
Dim ArraySplitHTML
Dim iArrayItem As Long
Dim strTranslated As String

strInnerHTML = IE.Document.getElementById("result_box").innerHTML

'some other code here to fix hmtl character encodings, clean up HTML, etc. etc.

GetTransItem = strTranslated

End Function

Эта строка теперь выдает ошибку по состоянию на прошлый четверг (29 ноября), когда Google обновил веб-сайт гугл-перевода:

strInnerHTML = IE.Document.getElementById("result_box").innerHTML

HTML теперь совершенно другой, и я не знаю достаточно, чтобы узнать, что мне нужно, чтобы «ПОЛУЧИТЬ» вместо «result_box», чтобы найти переведенный текст на сайте.

Если кто-нибудь может помочь мне выяснить, какие строки кода вернут мне строку с результатом перевода, я был бы очень признателен.

Ответы [ 2 ]

0 голосов
/ 04 декабря 2018

Вы все еще можете использовать браузер для получения информации о переводе.Это просто для того, чтобы продемонстрировать захват таблицы переводов с правой стороны.

Option Explicit

Public Sub GetInfo()
    Dim IE As New InternetExplorer, t As Date, clipboard As Object, ws As Worksheet
    Const MAX_WAIT_SEC As Long = 5

    Set ws = ThisWorkbook.Worksheets("Sheet1")
    Set clipboard = GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")

    With IE
        .Visible = True
        .navigate "https://translate.google.com/#view=home&op=translate&sl=auto&tl=en"

        While .Busy Or .readyState < 4: DoEvents: Wend

        .document.querySelector("#source").Value = "Bonjour"

        Dim hTable As HTMLTable
        t = Timer
        Do
            On Error Resume Next
            Set hTable = .document.querySelector(".gt-baf-table")
            On Error GoTo 0
            If Timer - t > MAX_WAIT_SEC Then Exit Do
        Loop While hTable Is Nothing
        If Not hTable Is Nothing Then
            clipboard.SetText hTable.outerHTML
            clipboard.PutInClipboard
            ws.Cells(1, 1).PasteSpecial
        End If
        .Quit
    End With
End Sub

Уточните у местной версии HTML имя класса для таблицы перевода справа:

enter image description here


Из поля результатов:

Option Explicit
Public Sub GetInfo()
    Dim IE As New InternetExplorer, t As Date, ws As Worksheet
    Const MAX_WAIT_SEC As Long = 5

    Set ws = ThisWorkbook.Worksheets("Sheet1")

    With IE
        .Visible = True
        .navigate "https://translate.google.com/#view=home&op=translate&sl=auto&tl=en"

        While .Busy Or .readyState < 4: DoEvents: Wend

        .document.querySelector("#source").Value = "je vous remercie"

        Dim translation As Object, translationText As String
        t = Timer
        Do
            On Error Resume Next
            Set translation = .document.querySelector(".tlid-translation.translation")
            translationText = translation.textContent
            On Error GoTo 0
            If Timer - t > MAX_WAIT_SEC Then Exit Do
        Loop While translationText = vbNullString

        ws.Cells(1, 1) = translationText
       .Quit
    End With
End Sub
0 голосов
/ 04 декабря 2018

Похоже, это платная услуга :

"Translate API

У Google также есть более надежное платное предложение. Translate Translate можетиспользоваться для поддержки веб-приложений, а также для перевода контента веб-сайта. ".

" Простая интеграция

Интерфейс API перевода прост в использовании-используйте Google REST API. Вам не нужно извлекать текст из документа, просто отправьте ему документы HTML и верните переведенный текст. ".

Перевод:

  • Google Speak: «Вам не нужно извлекать текст из документа ...».

  • Английский: «У вас нет больше не могут извлечь текст из вашего документа ... ".

Часто задаваемые вопросы по переводу Google :

«Существует ли какая-либо свободная квота?
Нет, API-интерфейс облачного перевода доступен только как платная услуга. Для получения более подробной информации см. Ценообразование ."Результаты возвращаютсяРедактирование URL-адреса теперь затрудняет очистку , чтобы предотвратить обход платного сервиса.Бесплатный перевод по-прежнему доступен для людей.

...