【发布时间】:2013-03-17 08:08:18
【问题描述】:
我想从与问题can jsoup handle meta refresh redirect 非常相似的元刷新重定向中获取 HTML 页面。
但我无法让它工作。我想在http://synchronkartei.de 上进行搜索。 我有以下代码:
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class SynchronkarteiScraper {
public static void main(String[] args) throws Exception{
Document doc = Jsoup.connect("https://www.synchronkartei.de/search.php")
.data("cat", "2")
.data("search", "Thomas Danneberg")
.data("action", "search")
.followRedirects(true)
.get();
Elements meta = doc.select("html head meta");
for (final Element m : meta){
if (m.attr("http-equiv").contains("refresh")){
doc = Jsoup.connect(m.baseUri()+m.attr("content").split("=")[1]).get();
}
}
System.out.println(doc.body().toString());
}
}
这会进行搜索,这会导致一个临时站点被刷新并打开真实的结果页面。 与转到http://synchronkartei.de 相同,从下拉框中选择“Sprecher”,在文本字段中输入“Thomas Danneberg”并回车。
但即使在提取刷新URL并进行第二次连接后,我仍然得到临时登陆页面的内容,可以在body的prinln中看到。
那么这里出了什么问题?
请注意,站点 synchronkartei.de 始终重定向到 HTTPS。由于它使用的是 StartCom 的证书,java 抱怨证书路径。要让上面的代码 sn -p 工作,需要使用带有正确证书的 VM 参数-Djavax.net.ssl.trustStore=<path-to-keystore>。
【问题讨论】:
标签: java redirect refresh jsoup meta