我想抓取网页的内容-http://www.pgmfi.org/。但是,如果我们访问页面,我们将看到它重定向到页面-http://twiki.pgmfi.org/bin/view。
当我尝试使用jsoup
或crawler4j
爬网(http://www.pgmfi.org/(时,我得到了以下内容。
Looking for PGMFI.ORG Home ? Please wait redirecting to: http://twiki.pgmfi.org
但我想从该重定向网页(http://twiki.pgmfi.org/bin/view(中获取有关网页的更多信息。当我使用jsoup
运行简单的代码时,我找到了以下内容。
String url = "http://www.pgmfi.org/";
Response response = Jsoup.connect(url).followRedirects(false).execute();
System.out.println(response.statusCode() + " : " + response.url());
//check if URL is redirect?
System.out.println("Is URL going to redirect : " + response.hasHeader("location"));
System.out.println("Target : " + response.header("location"));
输出:
200 : http://www.pgmfi.org/
Is URL going to redirect : false
Target : null
因此,重定向显然不是直率的。我的问题 - 有什么办法,我可以将页面重定向到而无需解析HTML主体的URL?
我更喜欢使用crawler4j
的解决方案。即使是jsoup
中的解决方案对我来说都很好。
crawler4j
不支持从meta-refresh
提取URL。但是,crawler4j
提供了相应的元标记(请参阅HTMLParseData
(,因此您可以通过schedule(...)
中的Frontier
对象增强visit(...)
方法将提取的URL添加到CC_11对象。
但是,Frontier
在WebCrawler
中仅具有private
访问,因此您的混凝土子类不可用。为了修改此操作,youl要么需要(a(分叉,要么(b(使用反射API更改访问修饰符。
另一种方法是在此处在官方问题跟踪器上打开问题。