我想从这个网址下载一个网页来源到一个文件(* .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创建的页面?
问候 -
答案 0 :(得分:0)
这不是一个servlet问题 - 只是发生是用于实现服务器的技术,但通常客户端不需要关心它。我强烈怀疑服务器正在响应不同的数据,具体取决于请求标头(例如User-Agent)。例如,与我在Chrome中加载时相比,当我使用curl
获取时,我会看到非常不同的响应。
我建议您尝试使用curl
,发出一个尽可能接近浏览器请求的请求,然后进行调整,直到找到确切涉及哪些标头。您可能希望使用Wireshark或Fiddler来轻松查看所涉及的确切请求/回复。
当然,即使您可以正确地获取原始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才能正确下载此页面?