在 java 中下载一个网页,该网页会调用 AJAX 加载
Download in java a webpage which makes AJAX call to load
我正在尝试从不同的网站获取酒店评论。
对于简单的普通 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 )。
这里我不知道如何下载网页作为酒店列表,它在页面上,并且随着我们向下滚动而不断出现。
任何建议都会有很大帮助。
通过使用完成 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 returns 的 GET 请求返回 JSON 评论数组,因此我可以提取酒店评论。
我正在尝试从不同的网站获取酒店评论。
对于简单的普通 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 )。
这里我不知道如何下载网页作为酒店列表,它在页面上,并且随着我们向下滚动而不断出现。
任何建议都会有很大帮助。
通过使用完成 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 returns 的 GET 请求返回 JSON 评论数组,因此我可以提取酒店评论。