news 2026/5/11 7:32:05

如何抓取亚马逊数据

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
如何抓取亚马逊数据

本文将带你学习如何抓取亚马逊商品数据,并构建可自动运行的数据采集流程,为价格分析与业务决策提供可靠支持。


开始之前,请确保已安装 Python 和一些关键库(Requests、pandas、BeautifulSoup、Playwright)。具备网页抓取和 HTML 的基础知识会有所帮助。

必备基础

Python:

请安装 Python 3.7.9 或更高版本。如果您是 Python 新手,请参阅 Python 网页抓取指南。

项目设置:

mkdir scraping-amazon-python && cd scraping-amazon-python

所需库:

Requests—— 处理 HTTP 请求。

pandas—— 用于数据处理和分析。

BeautifulSoup (BS4)—— 解析 HTML 内容。

Playwright—— 自动化浏览器相关任务。

通过终端安装:

pip3 install beautifulsoup4 pip3 install requests pip3 install pandas pip3 install playwright playwright install

注意: playwright install 这对于安装必要的浏览器二进制文件至关重要。

浏览亚马逊的布局和数据组件

安装好必要的库之后,你需要熟悉一下亚马逊的网站结构。亚马逊的主页提供了一个用户友好的搜索栏,方便你浏览从电子产品到书籍等各种各样的商品。

输入搜索条件后,搜索结果将以列表形式显示,包括产品名称、价格、评分和其他相关信息。值得注意的是,这些搜索结果可以使用各种筛选条件进行排序,例如价格范围、产品类别和客户评价:

如果您需要更详细的搜索结果,可以使用页面底部的分页按钮。每页通常包含多个列表,方便您浏览更多产品。页面顶部的筛选器可帮助您根据自身需求优化搜索结果。

要深入了解亚马逊的 HTML 结构,请按照以下步骤操作:

  1. 访问亚马逊网站。
  2. 在搜索栏中输入您想要的产品,或从精选列表中选择一个类别。
  3. 右键单击产品并选择 “检查元素” ,打开浏览器的开发者工具。
  4. 查看 HTML 布局,确定要提取的数据的标签和属性。

抓取亚马逊产品

现在您已经熟悉了亚马逊的产品结构,在本节中,您将收集产品名称、评分、评分数量和价格等详细信息。

在项目目录中,创建一个名为`python`的新Python脚本 amazon_scraper.py ,并将以下代码添加到该脚本中:

import asyncio from playwright.async_api import async_playwright import pandas as pd async def scrape_amazon(): async with async_playwright() as pw: # Launch new browser browser = await pw.chromium.launch(headless=False) page = await browser.new_page() # Go to Amazon URL await page.goto('https://www.amazon.com/s?i=fashion&bbn=115958409011') # Extract information results = [] listings = await page.query_selector_all('div.a-section.a-spacing-small') for listing in listings: result = {} # Product name name_element = await listing.query_selector('h2.a-size-mini > a > span') result['product_name'] = await name_element.inner_text() if name_element else 'N/A' # Rating rating_element = await listing.query_selector('span[aria-label*="out of 5 stars"] > span.a-size-base') result['rating'] = (await rating_element.inner_text())[0:3]await rating_element.inner_text() if rating_element else 'N/A' # Number of reviews reviews_element = await listing.query_selector('span[aria-label*="stars"] + span > a > span') result['number_of_reviews'] = await reviews_element.inner_text() if reviews_element else 'N/A' # Price price_element = await listing.query_selector('span.a-price > span.a-offscreen') result['price'] = await price_element.inner_text() if price_element else 'N/A' if(result['product_name']=='N/A' and result['rating']=='N/A' and result['number_of_reviews']=='N/A' and result['price']=='N/A'): pass else: results.append(result) # Close browser await browser.close() return results # Run the scraper and save results to a CSV file results = asyncio.run(scrape_amazon()) df = pd.DataFrame(results) df.to_csv('amazon_products_listings.csv', index=False)

在这段代码中,您利用 Python 的异步功能和 Playwright 库,从特定的亚马逊时尚页面抓取产品列表 。启动一个新的浏览器实例并导航到目标亚马逊 URL 后,您将提取产品信息,例如产品名称、评分、评论数和价格。遍历页面上的每个列表后,您将过滤掉没有数据的列表(即 标记为“N/A”)。抓取结果随后保存到 Pandas DataFrame 中,并导出到名为 `.cvs amazon_products_listings.csv...

要运行脚本,请 python3 amazon_scraper.py 在终端或 shell 中执行。输出结果应如下所示:

product_name,rating,number_of_reviews,price Crocs Women's Kadee Ii Sandals,4.2,17.5K+,$29.99 Teva Women's W Flatform Universal Sandal,4.7,7K+,$58.80 "OOFOS OOriginal Sport Sandal - Lightweight Recovery Footwear - Reduces Stress on Feet, Joints & Back - Machine Washable - Hand-Painted Graphics",4.5,9.4K+,N/A "Crocs Women's Brooklyn Low Wedges, Platform Sandals",4.6,11.7K+,N/A Teva Women's Original Universal Sandal,4.7,18.7K+,$35.37 Reef Women's Water Vista Sandal,4.5,1.9K+,$59.95 Crocs Women's Brooklyn Platform Slides Sandal,4.2,376,N/A …output omitted…

请注意: 如果脚本首次运行失败,请尝试再次运行。

亚马逊拥有完善的反抓取措施,可能会阻止或拦截您的数据抓取尝试。

亚马逊高级数据抓取技巧

当你开始使用亚马逊进行数据抓取时,你会很快发现,这家以复杂精细的网页而闻名的电商巨头,其带来的挑战远非基本的抓取方法所能应对。不妨了解一些高级技巧,它们可以帮助你获得流畅高效的抓取体验:

处理分页

亚马逊会展示大量产品,通常会跨越多个页面。为了抓取所有数据,您的脚本必须能够流畅地浏览这些页面。一种常见的方法是锁定 产品列表底部的“下一页”click按钮。通过识别该按钮的唯一选择器,您可以编写脚本使其点击该按钮,从而跳转到下一页。但是,请确保您的爬虫程序在所有元素加载完毕后再继续执行操作。

绕过广告

亚马逊产品列表中经常会出现广告。这些广告的结构可能与普通产品略有不同,这可能会导致抓取过程出现问题。为了解决这个问题,你需要检测代表广告的元素或标签。例如,查找带有 `<advertisement>` 或 `<advertisement> Sponsored ` 等标签的条目Ad。一旦检测到这些条目,你可以指示脚本跳过它们,从而确保只收集真实的商品数据。

缓解阻塞

亚马逊对其内容高度重视,可能会屏蔽或暂时中止其认为是机器人操作或可疑的活动。因此,让你的爬虫程序尽可能地模仿人类行为至关重要。

为了避免被屏蔽,你需要使用类似 `tf.flash` 的函数在请求之间引入延迟或随机间隔 asyncio.sleep(random.uniform(1, 5))。这会让你的抓取行为看起来不那么机械化。此外,考虑轮换用户代理和 IP 地址以降低被检测到的风险。如果遇到验证码挑战,使用验证码破解服务也会有所帮助。

动态处理内容

亚马逊的部分内容,例如评论或问答部分,是动态加载的,基本的爬虫程序可能无法抓取到这些数据。你需要确保你的爬虫程序能够执行 JavaScript 并等待动态内容加载完毕。使用 Playwright 或 Selenium 等工具,你可以使用显式等待,确保在爬虫程序继续执行之前,特定元素已经加载完毕。

设置抓取限制

不幸的是,发送大量并发请求可能会导致 IP 地址被列入黑名单。为避免这种情况发生,您需要限制发送请求的速率。

设计脚本时,请确保不会对亚马逊的服务器造成过大压力。如前所述,在请求之间设置合理的延迟至关重要。

通过实施这些先进技术,您不仅可以提高在亚马逊上抓取数据的效率,还可以确保抓取程序的持久性,降低其被检测或屏蔽的几率。

结论

在实际规模化采集中,稳定性与成功率往往比“能否抓取”更重要。依托网络代理商提供的高质量代理资源,企业可以更稳定、合规地采集跨平台价格数据,为MAP监控、品牌保护和市场分析提供持续可靠的数据支持。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/30 4:30:34

微信小程序二维码生成实战指南:从零配置到高级定制

微信小程序二维码生成实战指南&#xff1a;从零配置到高级定制 【免费下载链接】weapp-qrcode Wechat miniapp generate qrcode image 项目地址: https://gitcode.com/gh_mirrors/wea/weapp-qrcode 你是否曾在小程序开发中遇到过这样的困境&#xff1a;想要生成一个美观…

作者头像 李华
网站建设 2026/5/10 11:02:38

Windows安全防护一键管理终极指南:5分钟快速掌握Defender Control

Windows安全防护一键管理终极指南&#xff1a;5分钟快速掌握Defender Control 【免费下载链接】defender-control An open-source windows defender manager. Now you can disable windows defender permanently. 项目地址: https://gitcode.com/gh_mirrors/de/defender-con…

作者头像 李华
网站建设 2026/4/28 4:59:22

8个降AI率工具,专科生必看!

8个降AI率工具&#xff0c;专科生必看&#xff01; AI降重工具&#xff0c;让论文更自然、更合规 随着AI技术的广泛应用&#xff0c;越来越多的学生在撰写论文时会借助AI工具进行辅助。然而&#xff0c;AI生成的内容往往存在明显的“AI痕迹”&#xff0c;不仅容易被查重系统识别…

作者头像 李华
网站建设 2026/5/3 6:48:32

利用Vivado注册2035构建自动化产线控制系统——深度剖析

用Vivado构建未来产线控制大脑&#xff1a;从注册机制到自动化落地的全链路实战工业现场&#xff0c;一条SMT贴片线正高速运转。元件以每分钟300个的速度被精准放置&#xff0c;机械臂在毫秒级响应中完成抓取与定位。突然&#xff0c;某个传感器信号异常——传统PLC可能需要几个…

作者头像 李华
网站建设 2026/5/9 23:16:26

GKD订阅管理完整教程:2025年快速上手与高效使用指南

GKD订阅管理完整教程&#xff1a;2025年快速上手与高效使用指南 【免费下载链接】GKD_THS_List GKD第三方订阅收录名单 项目地址: https://gitcode.com/gh_mirrors/gk/GKD_THS_List GKD订阅管理工具是专门为GKD用户设计的订阅资源聚合平台&#xff0c;通过统一的收录标准…

作者头像 李华
网站建设 2026/5/5 12:31:03

数据导出革命:碧蓝航线自动化统计秒变Excel报表的终极方案

还记得那些手动记录碧蓝航线资源消耗、战斗数据的日子吗&#xff1f;作为资深指挥官&#xff0c;我曾经也深陷数据记录的泥潭。直到发现了AzurLaneAutoScript的数据导出功能&#xff0c;我的游戏体验彻底改变。今天&#xff0c;我要分享如何将自动化统计数据一键转换为Excel报表…

作者头像 李华