使用Google Sheets IMPORTXML函数获取亚马逊二手图书数据失败求助
解决Google Sheets IMPORTXML抓取亚马逊二手图书价格的问题
核心原因
亚马逊商品页右侧的二手/第三方卖家面板数据是JavaScript动态加载的,不属于页面初始加载的静态HTML内容。而IMPORTXML只能解析页面首次返回的静态HTML,所以直接用主页面的XPath抓取不到这部分数据。
解决方案
1. 使用亚马逊官方的二手商品列表页
亚马逊每个商品都有对应的二手/其他卖家列表页,格式为:
https://www.amazon.com/gp/offer-listing/[ASIN]/ref=dp_olp_all_mbc?ie=UTF8&condition=used
把[ASIN]替换成目标商品的ASIN(就是商品链接中dp/后面的那串字符,比如你示例中的0578973839)。
2. 用IMPORTXML抓取二手列表页的价格
针对这个列表页,可用以下XPath提取价格:
- 提取所有二手商品价格:
=IMPORTXML("https://www.amazon.com/gp/offer-listing/0578973839/ref=dp_olp_all_mbc?ie=UTF8&condition=used", "//span[@class='a-price']//span[@class='a-offscreen']") - 提取最低的二手价格(第一个匹配结果):
=INDEX(IMPORTXML("https://www.amazon.com/gp/offer-listing/0578973839/ref=dp_olp_all_mbc?ie=UTF8&condition=used", "//span[@class='a-price']//span[@class='a-offscreen']"),1)
3. 备选方案:应对IMPORTXML反爬限制
如果亚马逊限制了IMPORTXML的请求,可改用IMPORTDATA配合正则提取:
=REGEXEXTRACT(IMPORTDATA("https://www.amazon.com/gp/offer-listing/0578973839/ref=dp_olp_all_mbc?ie=UTF8&condition=used"), "a-offscreen"">(.*?)<")
这个公式会提取页面中第一个出现的价格字符串。
注意事项
- 亚马逊的页面结构可能随时变化,若XPath失效,需重新在二手列表页中右键检查元素,复制最新的价格节点XPath。
- 频繁抓取可能触发亚马逊的反爬机制,建议避免短时间内大量请求。
内容的提问来源于stack exchange,提问作者Hamza Malik
相关产品推荐
相关产品推荐

