我想得到来自this site的所有评论。在
首先,我使用以下代码:
import requests
from bs4 import BeautifulSoup
r = requests.get(
"https://www.traveloka.com/hotel/singapore/mandarin-orchard-singapore-10602")
data = r.content
soup = BeautifulSoup(data, "html.parser")
reviews = soup.find_all("div", {"class": "reviewText"})
for i in range(len(reviews)):
print(reviews[i].get_text())
但是这样,我只能从第一页得到评论。在
有人说我可以使用相同的requests
模块来实现这一点。我找到了https://api.traveloka.com/v1/hotel/hotelReviewAggregate的api,但我无法读取参数,因为我不知道如何使用使用request payload
方式的api。在
所以我希望有一个代码可以使用python或api的参数来获得所有的评论,从而在所有或特定的页面中获得对特定酒店的评论。在
查看network选项卡上的请求负载。有一部分是
skip:8
和top:8
,当您单击右箭头以获得下一页评论时,您将看到这些数字以8递增。在您可以复制该请求并以相同的方式获取结果
编辑:
用chrome打开你的页面并点击}。推进下一批评论,看看这些数字是如何变化的。您可以模拟此行为以访问其他页面。在
f12
。转到Network
选项卡,在页面底部向下滚动,在那里可以前进到下一批评论。一旦您点击右箭头,网络选项卡将被填充。找到第二个hotelReviewAggregate
,然后单击它。在headers选项卡下,您将找到Request Payload
。打开data
dict并找到skip
和{然后,您需要做的是准备有效负载,在这里您可以增加值并发出
GET
请求,并使用response objects
来用beautifulGroup刮取数据。在请求here
教程中的快速示例:
payload = {'key1': 'value1', 'key2': 'value2'} r = requests.get('http://httpbin.org/get', params=payload)
我不知道为什么人们不加解释就把我的答案给否定了。但是,如果你觉得这个有用并且回答了你的问题,请接受它。在
相关问题 更多 >
编程相关推荐