我想从元刷新重定向中获取HTML页面,与问题can jsoup handle meta refresh redirect非常相似。Jsoup元刷新重定向
但我无法让它工作。我想在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”并按回车。
但即使在提取刷新网址并进行第二次连接之后,我仍然可以看到临时着陆页的内容,这可以在正文的主题中看到。
那么这里出了什么问题?
作为说明,站点synchronkartei.de始终重定向到HTTPS。而且由于它使用StartCom的证书,所以java会抱怨证书路径。要让上面的代码片段工作,有必要使用带有正确证书的VM参数-Djavax.net.ssl.trustStore=<path-to-keystore>
。
从昨天开始,Synchronkartei支持没有cookie或重定向的'/?q = {searchTerm}'。 – Funzi 2013-05-05 15:16:10
感谢您的帮助。这样做与cookie的作品。但是我有一个关于'/?q = {searchTerm}'方法的问题。我不习惯OpenSearchDescriptions,所以对于可能的愚蠢问题感到抱歉。是否只能搜索单个字符串,或者是否有办法更多地筛选结果以获取(例如,只有具有给定搜索字符串的actor)(如我的原始帖子中的示例)? – radlan 2013-05-07 21:00:53
Hi radlan,在使用/?q = {searchTerm}时,目前没有可能过滤演员或电影的结果。但是如果你使用/search.php?cat={category}&search={searchterm},你可以用1(全部),2(配音演员),3(电影演员),4(电影),5(电视系列)和6(电影参与)。 – Funzi 2013-05-29 16:03:33