如何使用PhantomjsCloud API滚动加载动态内容获取全部谷歌评价
谷歌评价全量获取解决方案
核心原因
你当前调用PhantomJSCloud接口只返回10条评价,是因为谷歌本地评价页属于动态加载页面,默认只渲染首屏10条内容,只有滚动到评论区域底部才会触发下一批评论的加载请求,你之前的请求没有模拟滚动操作,所以只能拿到首屏内容。
调整请求参数实现全量加载
你需要在原有的请求参数中加入自定义执行脚本和页面返回判定条件,修改后的完整request参数如下:
{ "url": "https://search.google.com/local/reviews?placeid=ChIJF47RCZLBeUgRSpiTvcpPEfA", "renderType": "html", "scripts": { "execute": [ ` (async function() { const reviewWrap = document.querySelector('.gws-localreviews__general-reviews-block'); if (!reviewWrap) return; let preLength = 0; let curLength = document.querySelectorAll('.gws-localreviews__google-review').length; let scrollCount = 0; // 最大滚动次数,可根据实际评论数调整 const maxScrollCount = 15; while (preLength !== curLength && scrollCount < maxScrollCount) { preLength = curLength; // 滚动到评论区域底部 reviewWrap.scrollTop = reviewWrap.scrollHeight; // 等待新评论加载渲染,可根据网络情况调整时长 await new Promise(resolve => setTimeout(resolve, 3000)); curLength = document.querySelectorAll('.gws-localreviews__google-review').length; scrollCount++; } })(); ` ] }, // 配置返回条件,确保评论加载完成后再返回内容 "doneWhen": [ {"event": "domReady"}, {"script": "document.querySelectorAll('.gws-localreviews__google-review').length > 10 || document.querySelector('.gws-localreviews__no-more-reviews') != null"} ] }
把上面的JSON对象URL编码后替换你原请求中的request参数即可。
注意事项
- 最大滚动次数
maxScrollCount可以根据你的商家实际评论数量调整,避免无效等待 - 等待加载的3000毫秒可以根据网络情况适当调整,网络较差时可以拉长到4000-5000毫秒
- 谷歌对商家公开评论的展示有上限,部分商家最多仅公开显示100-150条评论,达到上限后即使继续滚动也无法获取更多内容
内容的提问来源于stack exchange,提问作者Shahadul Islam
相关产品推荐
相关产品推荐

