当我通过Google翻译遇到这个问题时,我正在尝试与Jsoup进行不同的事情,以确定我是否可以从网页中提取信息。我已经足够远,所以我的程序可以直接发送一个直接转换到翻译页面的URL,但是当我尝试从中提取源代码时,它需要来自翻译的代码...... 页。 以下是日语页面的示例链接:
(此链接会在一段时间后更改回原来的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
谢谢!
答案 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...");
}