【问题标题】:How to access source code of translated page using Jsoup如何使用 Jsoup 访问翻译页面的源代码
【发布时间】:2015-01-22 03:57:27
【问题描述】:

当我在使用 Google 翻译时遇到这个问题时,我正在尝试使用 Jsoup 来查看是否可以从网页中提取信息。我已经走得够远了,以至于我的程序可以吐出一个直接转到翻译页面的 url,但是当我尝试从中提取源代码时,它会从 Translating...页。 以下是日语页面的示例链接:

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

(此链接稍后会变回原来的谷歌翻译页面)

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

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

之后出现的页面页面

这段代码会输出一个链接,让您通过 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

谢谢!

【问题讨论】:

    标签: java html-parsing jsoup


    【解决方案1】:

    Jsoup 不会自动加载 iframe。

    Translating... 之后的页面实际上是在 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...");
    }
    

    【讨论】:

    • Hey Stephan,感谢您的回答,但由于某种原因,该链接现在将您带到带有 iframe 的原始谷歌翻译页面。当我发布这个问题时,我已经过去了。我之前没有更好地解释的错误!我已经上传了我的代码,以展示如何将链接吐出到通过 iframe 的页面。但是,当您使用我编写的程序时,正在翻译...页面会暂时弹出,然后显示没有 iframe 的实际翻译页面。
    • @Fluke_of_Luke 如果您找到了满意的解决方案,请将其发布为答案并标记为已接受
    • 我还没有,我说的是从 iframe 中获取的链接中获取源代码。尝试访问该链接时,我得到了 Translating... 页面的源代码,而不是紧随其后的页面。
    • 我认为问题在于 **Translating... ** 页面进行元刷新,重定向到我想要的实际页面。请您花时间检查一下好吗?谢谢!
    猜你喜欢
    • 2012-07-08
    • 2018-04-08
    • 2023-03-07
    • 2013-05-05
    • 2020-04-20
    • 2019-05-12
    • 1970-01-01
    • 1970-01-01
    • 2021-06-06
    相关资源
    最近更新 更多