我需要得到kisaltilmis这个词,这是我到目前为止所尝试的:
Document doc = Jsoup.connect("https://translate.google.bg/?hl=bg#en/tr/abbreviated")
.userAgent("Mozilla/5.0 (Windows; U; WindowsNT 5.1; en-US; rv1.8.1.6) Gecko/20070725 Firefox/2.0.0.6")
.get();
Elements newsHeadlines = doc.select("#result_box > span");
for(Element e : newsHeadlines){
System.out.println(e.toString());
}
答案 0 :(得分:1)
您尝试获取的翻译是通过AJAX调用生成的。因此,无法在页面源中找到此信息。
实际查询转到https://translate.google.bg/translate_a/single
。它返回一个类似于以下
[[["kısaltılmış","abbreviated",,,0],...
不幸的是,由于逗号之间缺少值,因此它不是有效的JSON文件,因此应手动提取信息。
以下是从服务器
加载信息的代码段System.setProperty("http.agent", "Mozilla/5.0 (Windows; U; WindowsNT 5.1; en-US; rv1.8.1.6) Gecko/20070725 Firefox/2.0.0.6");
final String query = "abbreviated";
final String urlPrefix = "https://translate.google.bg/translate_a/single?client=t&sl=en&tl=tr&hl=bg&dt=at&dt=bd&dt=ex&dt=ld&dt=md&dt=qca&dt=rw&dt=rm&dt=ss&dt=t&ie=UTF-8&oe=UTF-8&source=bh&ssel=0&tsel=0&kc=1&tk=811697.665342&q=";
try (final InputStream stream = new URL(urlPrefix + URLEncoder.encode(query, "UTF-8")).openStream()) {
final String line = new BufferedReader(new InputStreamReader(stream, StandardCharsets.UTF_8)).readLine();
System.out.println(line);
}
请注意,Google会因使用Google翻译API而收取费用,因此,如果您过于频繁地尝试翻译,您可能会被禁止使用。