【问题标题】:Download in java a webpage which makes AJAX call to load在java中下载一个网页,使AJAX调用加载
【发布时间】:2015-01-20 14:43:33
【问题描述】:

我正在尝试从不同的网站获取酒店评论。

对于简单的纯 HTML 网页(如 TripAdvisor),我使用了 JSoup 并且这样做了

Jsoup.connect("foo.html").get();

对于使用 Javascript 进行加载的页面(如 Expedia),我使用了 Selenium WebDriver 并做了类似的事情

driver.get("foo.html");
driver.manage().timeouts().pageLoadTimeout(10,TimeUnit.SECONDS)  

他们很好,因为他们有链接,我可以使用这些链接来抓取并获得更多评论。

我面临的问题是从进行 AJAX 调用的页面下载时(例如 MakeMyTrip )。

在这里,我不知道如何将网页下载为酒店列表,该列表位于页面上,并在我们向下滚动时不断出现。

任何建议都会有很大帮助。

【问题讨论】:

  • 你需要一个无头浏览器,而不是 jsoup。
  • 正如我提到的,我将 JSoup 用于简单的网页。我要问的是如何在不更改其 URL 的情况下获取持续加载的页面(使用 ajax 调用)

标签: java ajax selenium webdriver web-crawler


【解决方案1】:

通过使用完成ajax调用的url来解决它。

例子:

对于 ID 为 200703241029455940(来自 main page)的酒店,我们会从 url 获得评论。

http://hotelz.makemytrip.com/makemytrip/site/hotels/detail/responsive/hotelMmtReviews?hotelId=200703241029455940&start=10&rows=10&reviewsType=all

对 URL 的 GET 请求返回一个 JSON 评论数组,因此我可以提取酒店评论。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-22
    • 1970-01-01
    • 1970-01-01
    • 2017-01-26
    相关资源
    最近更新 更多