2014-11-08 23 views
0

我使用的Web刮如何凑这页现成BeautifulSoap后加载的内容

我想这刮URL

http://www.wotif.com/hotel/View?hotel=W3830&page=1&adults=2&startDay=2014-11-08&region=1&descriptionSearch=true

我已经刮了所有需要的PythonBeautifulSoap内容但不能刮Guest Reviews部分。

其实问题是这个部分是由Ajax加载的,http://www.wotif.com/review/fragment?propertyId=W3830&limit=5加载那部分。而这个网址只返回HTML而不是全部评论

当我用BeautifulSoap刮该页面的HTML时,它没有Guest Reviews部分。

hotel_url = "http://www.wotif.com/hotel/View?hotel=W3830&page=1&adults=2&startDay=2014-11- 08&region=1&descriptionSearch=true" 
hotel_page = requests.get(hotel_url).text 
hotel_page_soup = BeautifulSoup(hotel_page) 

请问我该怎么办?无论我没有得到所有的客人评论,但我想获得最初的5个评论,当您在浏览器中查看时加载

+0

你获得许可刮自己的网站? – 2014-11-08 15:35:36

+0

是............. – Umair 2014-11-08 15:37:04

回答

0

主要监督是在假设the "AJAX" request返回HTML:它实际上是JSON(包含,因为它发生,在关键字html下的一个HTML blob)。你也可以在HTTP响应中看到这一点。

试试这个,然后:

import json 
import requests 
from bs4 import BeautifulSoup 

HOTEL_URL = 'http://www.wotif.com/review/fragment?propertyId=W3830&limit=5' 
content = requests.get(HOTEL_URL).text 
html = json.loads(content)["html"] 
soup = BeautifulSoup(html) 
reviews = soup.find_all('li', class_='review') 
# Returns a list of HTML contents for each review. 
# ... or use find_all('ul', 'review-details-comments') for less HTML 
+0

'hotel_url'是另一个..请参阅编辑的问题 – Umair 2014-11-08 15:53:33

+0

请参阅更新的答案。 – declension 2014-11-08 16:23:36

+0

亲爱的..看到我的问题中的Hotel_URL ...这是不同的网址...我想'BeautifulSoap'完成它的所有Ajax请求时抓取页面... – Umair 2014-11-08 16:26:40