如何在Google Sheets中用IMPORTXML抓取SimilarWeb全球网站排名
Google Sheets 抓取SimilarWeb全球排名实现方案
SimilarWeb页面数据为JavaScript动态渲染,原先适配Alexa的IMPORTXML类静态抓取函数无法直接获取渲染后的排名数据,可通过以下无第三方依赖的方式实现需求:
自定义函数实现步骤
- 打开目标Google Sheets文件,点击顶部菜单栏「扩展程序」-「Apps Script」打开脚本编辑器
- 清空编辑器内默认生成的代码,粘贴以下脚本:
function SIMILARWEB_RANK(domain) { const targetUrl = `https://www.similarweb.com/website/${domain}/`; const fetchOptions = { headers: { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36", "Accept-Language": "en-US,en;q=0.9" }, muteHttpExceptions: true }; try { const response = UrlFetchApp.fetch(targetUrl, fetchOptions); const pageContent = response.getContentText(); const rankResult = pageContent.match(/"GlobalRank":\{"rank":(\d+)/); return rankResult && rankResult[1] ? parseInt(rankResult[1]) : "未获取到有效排名"; } catch (err) { return "抓取异常,请检查域名格式"; } }
- 点击编辑器顶部保存按钮,自定义项目名称后完成脚本授权(自用脚本触发谷歌安全提示时,选择「高级」-「继续前往项目」即可授予权限)
- 回到表格单元格即可直接调用函数,例如查询谷歌排名时输入:
=SIMILARWEB_RANK("google.com")
单元格将直接返回对应排名数值,谷歌域名的返回结果为1,和页面展示结果一致。
使用注意
- 输入域名时无需添加
https://、www.前缀,直接填写根域名即可,例如查询百度排名直接输入baidu.com - 请勿短时间内高频批量调用函数,SimilarWeb存在反爬限制,高频请求会被临时拦截导致抓取失败
- 若偶发抓取失败,等待2-3分钟后重新触发计算即可
内容的提问来源于stack exchange,提问作者Kristyna
相关产品推荐
相关产品推荐

