html - 如何谷歌从法语翻译成英语?
问题描述
使用谷歌翻译,在使用下面的代码时,法语到英语不会返回正确的值。
如果我手动使用谷歌翻译应用程序,我会得到正确的翻译。
例如;
从“salle de l'émetteur”的代码,返回“导演室”。
从 Google Translate 应用程序中,正确返回“transmitter room”。
如果我检查 Google 翻译应用程序中的元素,我会在以下位置看到正确的翻译
span class="tlid-translation translation" lang = "en"
我不知道如何从“跨度标题类”中获取这个“内部文本”
有没有办法从
span class="tlid-translation translation" lang = "en"'
代替
objDivs = objHTML.getElementsByTagName("div"), objDiv.className = "t0"
Public Function Translate(strInput As String, strSourceLng As String, strTargetLng As String) As String
Dim strURL As String
Dim objHTTP As Object
Dim objHTML As Object
Dim objDivs As Object
Dim objDiv As Object
Dim strTranslated As String
' send query to web page
strURL = "https://translate.google.com/m?hl=" & strSourceLng & _
"&sl=" & strSourceLng & _
"&tl=" & strTargetLng & _
"&ie=UTF-8&prev=_m&q=" & strInput
Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP") 'late binding
objHTTP.Open "GET", strURL, False
objHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
objHTTP.send ""
' create an html document
Set objHTML = CreateObject("htmlfile")
With objHTML
.Open
.Write objHTTP.responseText
.Close
End With
Set objDivs = objHTML.getElementsByTagName("div")
For Each objDiv In objDivs
If objDiv.className = "t0" Then
strTranslated = objDiv.innerText
If strTranslated <> "" Then
Translate = strTranslated
End If
End If
Next objDiv
Set objHTML = Nothing
Set objHTTP = Nothing
End Function
解决方案
如果您使用早期绑定的 html 文档,即 MSHTML.HTMLDocument,那么您可以访问 querySelector 并可以尝试使用 css 选择器来定位该元素
例如
Dim html As MSHTML.HTMLDocument
Set html = New MSHTML.HTMLDocument
html.body.innerHTML = objHTTP.responseText
Debug.Print html.querySelector(".translation[lang=en]").innerText
需要 VBA>Tools>References> 添加对 Microsoft HTML 对象库的引用。
这假设翻译在.innerText
. 这将有助于分享显示翻译的回复的相关部分。
推荐阅读
- sql-server - SQL Server报表查询设计与优化
- css - css网格自定义布局流程
- db2 - 在 DB2 中使用触发器将表设为只读
- javascript - Javascript Json对象到带有虚线键的对象
- node.js - 阻止某些端点不发送到应用程序洞察力 - nodejs
- solace - Solace Dot Net Core SSL 问题
- javascript - 谷歌地图标记在 React 中没有刷新
- jquery - 未调用 JQuery getJSON 方法
- python - 在 for 循环中调用 Python 变量
- clojure - 一个 cond-> 线程宏替代方案,它引用谓词中的最后一个线程状态?