【问题标题】:Get html document programmaticaly simulating a web browser以编程方式获取 html 文档,模拟 Web 浏览器
【发布时间】:2015-12-20 18:53:49
【问题描述】:

问题是我正在尝试使用 Jsoup 类获取 html 文档,但我意识到使用 Jsoup.connect 获得的文档与我直接使用 Web 浏览器下载得到的文档并不完全相同。

示例:
我想监控一篇文章的价格。我使用以下方法获取“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:我尝试过不同的)

但是我得到的文档没有定价信息,带有信息的标签显示为“无效”。
否则,如果我尝试使用任何网络浏览器下载它,页面会直接显示价格表。

额外问题

我在尝试获取 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 的 TOS,但我不想做大量的解析。

【问题讨论】:

    标签: java html parsing connection jsoup


    【解决方案1】:

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

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

    【讨论】:

    • 可能值得一提的是 HtmlUnit(它有一个 Selenium 驱动程序)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-23
    • 2011-02-26
    • 1970-01-01
    相关资源
    最近更新 更多