首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用VBA、Excel和Selenium实现DEEPL.com的网络抓取

用VBA、Excel和Selenium实现DEEPL.com的网络抓取
EN

Stack Overflow用户
提问于 2022-08-17 08:03:46
回答 1查看 194关注 0票数 0

我正试图用DEEPL.com编写一个函数来翻译Excel中的句子,我的方法是使用Selenium来使用Chrome刮取网页(因为IExplore不受web支持)。

代码语言:javascript
复制
Public Function deepL(txt As String, inputLang As String, outputLang As String)
Dim url As String
Dim driver As New WebDriver

url = "https://www.deepl.com/translator#" & inputLang & "/" & outputLang & "/" & txt
driver.Start "Chrome"
driver.Timeouts.ImplicitWait = 5000
driver.Get url

deepL = driver.FindElementById("target-dummydiv").Text
driver.Close

End Function
----
Sub translating()
'test for word "probando" from "es" to "en"
'url: https://www.deepl.com/translator#es/en/probando
'it should return: "testing"
MsgBox (deepL("probando", "es", "en"))
End Sub

这个问题是在加载web时出现的,因此包含翻译的div在加载时为空,GET指令返回一个空文本。但是,1秒后,页面将刷新正确的结果:

代码语言:javascript
复制
<div id="target-dummydiv" aria-hidden="true" class="lmt__textarea lmt__textarea_dummydiv" lang="en-US">testing</div>

我尝试添加一个5秒的隐式等待,以便给网页加载时间,但结果是一样的。

我做错了什么?

编辑:我发现带有翻译的div具有可见性:隐藏。如果我显示了可见性,结果是正确的,但不知道如何在我的代码中得到它

EN

回答 1

Stack Overflow用户

发布于 2022-08-17 09:12:24

好吧,我找到了一个解决方案:

只需选择翻译所在的文本区域,并使用.attribute("value")而不是.text获得翻译

代码语言:javascript
复制
deepL = driver.FindElementByCss("textarea.lmt__textarea.lmt__target_textarea.lmt__textarea_base_style").Attribute("value")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73384896

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档