以编程方式获取 html 文档,模拟 Web 浏览器

Get html document programmaticaly simulating a web browser

问题是我正在尝试使用 Jsoup class 获取 html 文档,我意识到我使用 Jsoup.connect 获得的文档与文档并不完全相似直接用浏览器下载就可以了

示例:
我想监控一篇文章的价格。我使用 "Icecat" 获取 html 文档:

Jsoup.connect( "http://icecat.es/es/p/sony/mdr-as200-blk/auriculares-0027242861022-Sony-MDR-AS200-18145805.html?ti=offers")
     .userAgent(userAgentString).timeout(5000)   
     .followRedirects(true).execute();

(userAgentString: 我试过不同的)

但是我得到的文档没有定价信息,出现了带有信息的选项卡"inactive"。
Ohterwise,如果我尝试使用任何网络浏览器下载它,页面会直接显示价格 table.

加分题

我在尝试获取 google 的结果页面时遇到了相同的行为。直接在网络浏览器中输入 https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#tbm=shop&q=Sony+MDR-AS200 是可以的,但是使用 java 获取它我被重定向到 google 的主页。我知道 google 的服务条款,但我不想进行大量解析。

Jsoup 不执行 JavaScript。如果您尝试获取的站点使用一些 AJAX 调用并动态创建(部分)DOM,那么您使用 Jsoup 就不走运了。

您可以为此使用 selenium webdriver,或者尝试找到 AJAX 调用并直接触发它们。