Jsoup从span类获取信息

时间:2016-11-07 15:06:24

标签: java html jsoup

我想通过Jsoup获取此信息: enter image description here

我需要得到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());
}

1 个答案:

答案 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而收取费用,因此,如果您过于频繁地尝试翻译,您可能会被禁止使用。