JAVA:如何下载servlet动态创建的网页

时间:2015-03-11 07:13:01

标签: java servlets download fileutils

我想从这个网址下载一个网页来源到一个文件(* .htm)(即包含所有html标记的整个内容):

http://isap.sejm.gov.pl/DetailsServlet?id=WDU20061831353

使用FileUtils.copyURLtoFile方法可以很好地工作。

但是,所述URL还有一些链接,例如我非常感兴趣的链接:

http://isap.sejm.gov.pl/RelatedServlet?id=WDU20061831353&type=9&isNew=true

此链接工作正常如果使用常规浏览器打开它,但当我尝试通过FileUtils下载Java时 - 我只得到一个没有内容的页面,其中包含单个消息“trwa ladowanie danych”(这意味着:“加载数据......”)但没有任何反应,目标页面未加载。

有人可以帮我吗?从URL我可以看到页面使用Servlets - 是否有一种特殊的方式来下载用servlet创建的页面?

问候 -

3 个答案:

答案 0 :(得分:0)

这不是一个servlet问题 - 只是发生是用于实现服务器的技术,但通常客户端不需要关心它。我强烈怀疑服务器正在响应不同的数据,具体取决于请求标头(例如User-Agent)。例如,与我在Chrome中加载时相比,当我使用curl获取时,我会看到非常不同的响应。

我建议您尝试使用curl,发出一个尽可能接近浏览器请求的请求,然后进行调整,直到找到确切涉及哪些标头。您可能希望使用WiresharkFiddler来轻松查看所涉及的确切请求/回复。

当然,即使您可以正确地获取原始HTML,仍然存在所有Javascript - HTML完全不可能包含任何数据,但是它包含用于获取实际数据的Javascript。我不相信这个特定页面的情况,但你可能会发现它适用于

答案 1 :(得分:0)

尝试使用selenium webdriver到主页

HtmlUnitDriver driver = new HtmlUnitDriver(true); 
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
driver.get(baseUrl);

然后导航到链接

driver.findElement(By.name("name of link")).click();

答案 2 :(得分:0)

更新:我检查了以下内容:如果我在Firefox中关闭cookie然后尝试加载我的页面:

http://isap.sejm.gov.pl/RelatedServlet?id=WDU20061831353&type=9&isNew=true

然后我产生了不正确的结果,就像在我的java应用程序中一样(即带有&#34的页面;加载数据"消息而不是正确的内容)。

现在,我如何管理java中的cookie才能正确下载此页面?