如何使用Jsoup访问已翻译页面的源代码

时间:2015-01-22 03:57:28

标签: java html-parsing jsoup

当我通过Google翻译遇到这个问题时,我正在尝试与Jsoup进行不同的事情,以确定我是否可以从网页中提取信息。我已经足够远,所以我的程序可以直接发送一个直接转换到翻译页面的URL,但是当我尝试从中提取源代码时,它需要来自翻译的代码...... 页。 以下是日语页面的示例链接:

http://translate.google.com/translate_p?sl=ja&tl=en&u=https://mixi.jp/&depth=1&usg=ALkJrhhBn74JodxnRkFSjqBuPEZ2RJRJAQ

(此链接会在一段时间后更改回原来的Google翻译页面)

如果你打开这个网址并快速点击ctrl + u,你将得到我之前谈论的翻译页面的源代码(这是我从这个网址中提取它时的Jsoup所做的)。如何访问此后的源代码(在翻译页面上)?

我已经尝试从翻译过的页面中提取链接并关注它,但它并没有给我我想要的结果。请仅帮助我访问翻译...

之后的页面

此代码会显示一条链接,指引您浏览iframe

    //GET INTO FIRST FRAME OF GOOGLE TRANSLATE PAGE     
    //translate web page from English to English through google translate
    String url1 = "http://translate.google.com/translate?sl=ja&tl=en&u=https://mixi.jp/";

    //create doc to hold html content
    Document document1 = Jsoup.connect(url1).userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0) Gecko/17.0 Firefox/17.0").get();

    //take url1 to web page where actual content is 
    Element link = document1.select("iframe").first();
    String linkSrc1 = link.attr("abs:src");

    System.out.println("linkSrc1: " + linkSrc1);
    //END OF GET INTO FIRST FRAME OF GOOGLE TRANSLATE PAGE

谢谢!

1 个答案:

答案 0 :(得分:0)

Jsoup不会自动加载iframe。

翻译... 之后的页面实际上已加载到iframe中。

以下是如何获得它:

Document doc = Jsoup.connect("http://translate.google.com/translate_p?sl=ja&tl=en&u=https://mixi.jp/&depth=1&usg=ALkJrhiYgjK_C-VB2hFQ6iJp08gETWw9yQ").get();

Elements elements = doc.select("iframe[name=c]");
if (elements.size() == 1) {
   Document pageAfterTranslation = Jsoup.connect(elements.first().attr("abs:src")).get();
   // ...
} else {
   throw new RuntimeException("Not exactly ONE iframe found...");
}