gpt4 book ai didi

java - 如何使用Selenium复制谷歌翻译的中文音译?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:06:19 24 4
gpt4 key购买 nike

我正在尝试使用 Selenium 提取 Google 翻译对中文单词的拼音音译,但在查找其 WebElement 时遇到了一些问题。

比如我查的字是“事”。我的代码如下:

String word = "事";
WebDriver driver = new HtmlUnitDriver();
driver.get("http://translate.google.com/#zh-CN/zh-CN/" + word);

当我使用浏览器转到实际页面时,我可以看到它的拼音是“Shì”,根据 Inspect Element,它的 id 是 src-translit。但是,当我去查看源代码时,虽然 id="src-translit" 存在,但您在附近看不到任何类似“Shì”的东西。它只是空的。

认为页面没有时间正确加载。我实现了 30 秒的等待期(有点漫长的等待,我知道,但我只是想知道它是否有效)。

int timeoutInSeconds = 30;
WebDriverWait wait = new WebDriverWait(driver, timeoutInSeconds);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("src-translit")));

不幸的是,即使有等待时间,音译及其文本仍然返回为空。

WebElement transliteration = driver.findElement(By.id("src-translit"));
String pinyin = transliteration.getText();

那么我的问题是:src-translit 发生了什么?为什么它不显示在 html 代码中,我如何找到它并从 Google 翻译中复制它?

最佳答案

听起来 javascript 没有被执行。看着 docs , 你可以像这样启用 javascript

HtmlUnitDriver driver = new HtmlUnitDriver();
driver.setJavascriptEnabled(true);

HtmlUnitDriver driver = new HtmlUnitDriver(true);

看看这是否有所作为。

编辑:

我仍然认为问题与 javascript 有关。当我使用 FirefoxDriver 运行它时,它工作正常:发出 AJAX 请求,并且 src-translit 元素已更新为 Shi

解决方法:

无论如何,监控网络流量,您可以看到,当您想要翻译事时,它会调用 AJAX

http://translate.google.com/translate_a/t?client=t&sl=zh-CN&tl=zh-CN&hl=en&sc=2&ie=UTF-8&oe=UTF-8&pc=1&oc=1&otf=1&rom=1&srcrom=1&ssel=0&tsel=0&q=%E6%B2%92%E4%BA%8B

返回 JSON:

[[["事","事","Shì","Shì"]],,"zh-CN",,[["事",,false,false,0,0,0,0]],,,,[],10]

也许你现在可以解析它。

关于java - 如何使用Selenium复制谷歌翻译的中文音译?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21004147/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com