技术问询:如何将亚马逊商品标题与价格导入Google Sheets
嘿,我刚好折腾过把亚马逊商品数据导入Google Sheets的需求,结合你给出的ASIN链接格式(https://www.amazon.com/dp/[ASIN]),给你分享两个实用的方法,亲测有效:
方法1:用Google Sheets内置函数(零代码,快速上手)
这个方法适合少量数据,直接用IMPORTXML函数抓取页面元素:
假设你的表格结构是:
- A列:填写ASIN编号(比如A2是B08N5WRWNW)
- B列:要填充的商品标题
- C列:要填充的商品价格
标题导入公式
在B2单元格输入:
=IFERROR(IMPORTXML("https://www.amazon.com/dp/"&A2,"//span[@id='productTitle']"),"获取失败")
然后下拉填充到其他行即可。IFERROR是用来处理亚马逊反爬或者页面结构变化导致的抓取失败,避免显示错误值。
价格导入公式
亚马逊的价格通常分为整数和小数两部分,我们可以合并抓取:
在C2单元格输入:
=IFERROR(CONCAT(IMPORTXML("https://www.amazon.com/dp/"&A2,"//span[@class='a-price-whole']"),".",IMPORTXML("https://www.amazon.com/dp/"&A2,"//span[@class='a-price-fraction']")),"获取失败")
同样下拉填充即可。如果遇到价格显示为促销价,可能需要调整XPath(比如把a-price-whole换成a-offscreen对应的元素,具体可以用浏览器开发者工具查看价格元素的属性)。
方法2:用Google Apps Script(更稳定,适合大量数据)
IMPORTXML容易被亚马逊的反爬机制拦截,尤其是批量抓取的时候。用Google Apps Script写自定义函数会更稳定,还能模拟浏览器请求:
步骤1:打开脚本编辑器
在你的Google Sheets里,点击顶部菜单「扩展程序」→「Apps Script」,打开脚本编辑页面。
步骤2:粘贴脚本代码
替换默认的代码为以下内容:
function getAmazonData(asin) { // 构造亚马逊商品链接 const amazonUrl = `https://www.amazon.com/dp/${asin}`; // 模拟浏览器请求头,避免被拦截 const requestOptions = { headers: { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36' } }; try { // 发送请求获取页面内容 const response = UrlFetchApp.fetch(amazonUrl, requestOptions); const pageHtml = response.getContentText(); // 提取商品标题(用正则匹配页面元素) const titleRegex = /<span id="productTitle" class="a-size-large product-title-word-break">(.*?)<\/span>/; const titleMatch = pageHtml.match(titleRegex); const productTitle = titleMatch ? titleMatch[1].trim() : '未获取到标题'; // 提取商品价格 const priceWholeRegex = /<span class="a-price-whole">(.*?)<\/span>/; const priceFractionRegex = /<span class="a-price-fraction">(.*?)<\/span>/; const priceWholeMatch = pageHtml.match(priceWholeRegex); const priceFractionMatch = pageHtml.match(priceFractionRegex); const productPrice = priceWholeMatch && priceFractionMatch ? `${priceWholeMatch[1].trim()}.${priceFractionMatch[1].trim()}` : '未获取到价格'; // 返回标题和价格数组 return [productTitle, productPrice]; } catch (error) { // 捕获错误,返回提示信息 return ['获取失败', '获取失败']; } }
步骤3:使用自定义函数
回到你的Google Sheets:
- 在B2单元格输入
=INDEX(getAmazonData(A2), 1),获取商品标题 - 在C2单元格输入
=INDEX(getAmazonData(A2), 2),获取商品价格
或者直接在B2输入=getAmazonData(A2),会自动填充B2和C2两列的数据。
第一次运行时会弹出权限授权提示,点击「允许」即可(需要确认是你自己的脚本,安全可靠)。
重要注意事项
- 亚马逊的页面结构经常更新,如果突然抓取不到数据,需要用浏览器开发者工具(F12)查看标题和价格元素的ID或类名,调整XPath或正则表达式。
- 批量抓取时,建议分批处理(比如每次50条),或者在脚本里加入延迟(比如
Utilities.sleep(1000),即每请求一次等待1秒),避免被亚马逊封禁IP。 - 如果是亚马逊其他站点(比如加拿大、英国),只需把脚本和公式里的
amazon.com改成对应的域名(比如amazon.ca、amazon.co.uk),同时调整元素匹配规则。
内容的提问来源于stack exchange,提问作者Mr. B
相关产品推荐
相关产品推荐

