Python请求整个HTML页面,而不是最初加载的内容
我试图在PlayStore上获取一些公开的评论数据,由于提供的API只允许获取自己应用程序的评论,所以我试图从网络上获取评论 我正在使用Python请求整个HTML页面,而不是最初加载的内容,python,html,python-3.x,web,web-scraping,Python,Html,Python 3.x,Web,Web Scraping,我试图在PlayStore上获取一些公开的评论数据,由于提供的API只允许获取自己应用程序的评论,所以我试图从网络上获取评论 我正在使用requests软件包获取PlayStore上给定应用程序的HTML页面,并将使用BeautifulSoup对其进行解析并将其保存到文件中,然后提取相关内容(每个用户的评级和评论) 我的问题是,并不是使用request.get(URL)检索页面的全部内容。 导航到PlayStore上某个应用程序上的“阅读所有评论”,您将进入该应用程序的所有评论页面。不幸的是,当
requests
软件包获取PlayStore上给定应用程序的HTML页面,并将使用BeautifulSoup
对其进行解析并将其保存到文件中,然后提取相关内容(每个用户的评级和评论)
我的问题是,并不是使用request.get(URL)
检索页面的全部内容。
导航到PlayStore上某个应用程序上的“阅读所有评论”,您将进入该应用程序的所有评论页面。不幸的是,当第一次加载页面时,只加载有限的一组评论,而其余的评论只在向下滚动到底部时加载。通过调用request.get(URL)
只检索有限的一组评论,而不是所有评论
尝试导航到https://play.google.com/store/apps/details?id=com.bendingspoons.thirtydayfitness&hl=en&showAllReviews=true
并查看仅当滚动到页面底部时加载的旧评论
是否有办法访问整个页面/触发加载更多评论/模拟滚动
下面是我的代码:
# get reviews for Thirty Days of Fitness app
URL = "https://play.google.com/store/apps/details?id=com.bendingspoons.thirtydayfitness&hl=en&showAllReviews=true"
# make request
request = requests.get(URL)
# extract HTML text
raw_text = request.text
# parse HTML and prettify
soup = BeautifulSoup(raw_text, 'html.parser')
text = soup.prettify()
# write to file
save_path = './thirtydayfitness_html.txt'
with open(save_path, 'w+', encoding=request.encoding) as f:
f.write(text)
将考虑使用Web驱动程序向下滚动。像这样
SCROLL_PAUSE_TIME = 0.5
# Get scroll height
last_height = driver.execute_script("return document.body.scrollHeight")
while True:
# Scroll down to bottom
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
# Wait to load page
time.sleep(SCROLL_PAUSE_TIME)
# Calculate new scroll height and compare with last scroll height
new_height = driver.execute_script("return document.body.scrollHeight")
if new_height == last_height:
break
last_height = new_height
参考资料:-