繁体   English   中英

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

[英]JAVA: how to download webpage dynamically created by servlet

我想从以下URL将网页的源代码下载到文件(* .htm)(即带有所有html标记的全部内容):

http://isap.sejm.gov.pl/Det​​ailsS​​ervlet?id=WDU20061831353

与FileUtils.copyURLtoFile方法完美配合。

但是,上述网址也有一些链接,例如我非常感兴趣的一个链接:

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

如果使用常规浏览器打开此链接,则该链接运行良好,但是当我尝试通过FileUtils在Java中下载该链接时,我只有一个没有内容的页面,带有单个消息“ trwa ladowanie danych”(这意味着:“正在加载数据...”),但是什么也没发生,目标页面没有加载。

有人可以帮我吗? 从URL中,我可以看到该页面使用Servlet-是否有一种特殊的方法来下载使用Servlet创建的页面?

问候 -

这不是servlet的问题- 恰好是用于实现服务器的技术,但是通常客户不需要关心这一点。 我强烈怀疑只是服务器根据请求标头(例如User-Agent)以不同的数据进行响应。 例如,当我用curl抓取它时,与在Chrome中加载它时,看到的响应截然不同。

我建议您尝试使用curl ,发出一个看起来尽可能接近浏览器请求的请求,然后再摆弄直到您可以准确地找到所涉及的标头。 您可能希望使用WiresharkFiddler轻松查看涉及的确切请求/响应。

当然,即使您可以正确地获取原始HTML,仍然存在所有Javascript-HTML完全不包含任何数据,但包含可进行实际数据获取的Javascript是完全可行的。 我认为特定页面不是这种情况,但是您很可能会发现这种情况发生在

尝试使用硒webdriver到主页

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

然后导航到链接

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

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

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

那么我会产生错误的结果,就像在我的Java应用程序中一样(即带有“正在加载数据”消息而不是适当内容的页面)。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM