用Python抓取亚马逊动态加载数据,一文读懂

本文涉及的产品
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
实时计算 Flink 版,5000CU*H 3个月
实时数仓Hologres,5000CU*H 100GB 3个月
简介: 用Python抓取亚马逊动态加载数据,一文读懂

一、动态加载数据的原理与挑战
亚马逊页面的动态加载主要基于现代前端技术,如AJAX、JavaScript框架(React、Vue.js)和WebSockets。这些技术使得页面内容在用户交互(如滚动、点击)或页面加载后通过异步请求从服务器动态获取并渲染。例如,商品列表、用户评论和价格信息等可能不会在页面初次加载时全部展示,而是通过JavaScript动态加载。
这种动态加载机制为数据抓取带来了两大挑战:

  1. 数据隐藏在异步请求中:直接抓取HTML页面可能无法获取到完整数据,因为部分数据需要通过JavaScript动态加载。
  2. 反爬虫机制:亚马逊会通过检测IP访问频率、User-Agent、Cookie等方式识别爬虫行为,并采取限制措施,如IP封禁或验证码验证。
    二、抓取动态加载数据的方法
    (一)分析网络请求
    抓取动态加载数据的第一步是分析网络请求,找到数据的源头。以下是具体步骤:
  3. 使用浏览器开发者工具(Chrome DevTools):
    ○ 打开亚马逊页面,按F12键打开开发者工具。
    ○ 切换到“Network”(网络)标签页,刷新页面并观察请求。
    ○ 筛选请求类型(如XHR、Fetch),找到加载数据的API请求。
    ○ 查看请求的URL、参数、方法(GET/POST)以及返回的数据格式(通常是JSON)。
  4. 模拟请求:
    ○ 使用Python的requests库模拟网络请求,获取数据。
    (二)使用Selenium模拟浏览器行为
    如果页面的数据加载依赖于JavaScript的动态执行,直接模拟请求可能无法获取到完整的数据。此时,可以使用Selenium库模拟浏览器行为,动态加载页面并获取数据。
    (三)使用Playwright进行无头浏览器操作
    Playwright是另一种强大的自动化工具,支持多种浏览器(如Chrome、Firefox、Safari)的无头模式操作。与Selenium相比,Playwright在性能和兼容性上更具优势。
    三、实战代码:抓取亚马逊商品评论数据
    为了更好地理解上述方法,我们以抓取亚马逊商品评论数据为例进行实战。我们将使用Selenium模拟浏览器行为,并结合代理服务以应对IP限制。
    以下是完整的Python代码,结合代理服务抓取亚马逊商品评论数据:
    ```import requests
    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.common.proxy import Proxy, ProxyType
    import time
    import random

代理服务器信息

proxyHost = "www.16yun.cn"
proxyPort = "5445"
proxyUser = "16QMSOML"
proxyPass = "280651"

设置Selenium代理

proxy = Proxy()
proxy.proxy_type = ProxyType.MANUAL
proxy.http_proxy = f"{proxyUser}:{proxyPass}@{proxyHost}:{proxyPort}"
proxy.ssl_proxy = f"{proxyUser}:{proxyPass}@{proxyHost}:{proxyPort}"

初始化WebDriver

options = webdriver.ChromeOptions()
options.Proxy = proxy
driver = webdriver.Chrome(options=options)

打开亚马逊商品页面

url = "https://www.amazon.com/dp/B07VGRJDF2" # 示例商品页面
driver.get(url)

等待页面加载完成

time.sleep(5) # 等待5秒,确保页面动态内容加载完毕

滚动页面以加载更多评论

driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
time.sleep(3) # 等待加载

获取评论元素

comments = driver.find_elements(By.CSS_SELECTOR, "div.review") # 根据实际页面结构调整CSS选择器
for comment in comments:
print(comment.text)

关闭浏览器

driver.quit()

四、数据解析与存储
获取到动态加载的数据后,下一步是解析和存储数据。常见的数据格式包括HTML、JSON等。Python提供了多种工具来解析这些数据。
(一)解析HTML数据
如果获取到的是HTML页面内容,可以使用BeautifulSoup库进行解析:
```四、数据解析与存储
获取到动态加载的数据后,下一步是解析和存储数据。常见的数据格式包括HTML、JSON等。Python提供了多种工具来解析这些数据。
(一)解析HTML数据
如果获取到的是HTML页面内容,可以使用BeautifulSoup库进行解析:

二)数据存储
解析后的数据可以根据需求存储到不同的格式中,如CSV、JSON文件或数据库中。

  1. 存储到CSV文件:Python复制
    ```import csv

with open("amazonreviews.csv", "w", newline="", encoding="utf-8") as file:
writer = csv.writer(file)
writer.writerow(["Reviewer", "Rating", "Comment"])
for review in reviews:
reviewer = review.find("span", class
="reviewer").text.strip()
rating = review.find("i", class="rating").text.strip()
comment = review.find("span", class
="comment").text.strip()
writer.writerow([reviewer, rating, comment])

存储到JSON文件:Python复制
```存储到JSON文件:Python复制

总结
通过本文的介绍,我们详细探讨了如何使用Python抓取亚马逊动态加载的数据。从分析网络请求到使用Selenium模拟浏览器行为,再到数据解析、存储和应对反爬虫策略,我们逐步攻克了动态数据抓取的难题。结合代理服务,我们成功解决了IP限制问题,确保爬虫的稳定运行。

相关文章
|
4天前
|
数据库 Python
【YashanDB知识库】python驱动查询gbk字符集崖山数据库CLOB字段,数据被驱动截断
【YashanDB知识库】python驱动查询gbk字符集崖山数据库CLOB字段,数据被驱动截断
|
2天前
|
SQL 自然语言处理 数据库
【Azure Developer】分享两段Python代码处理表格(CSV格式)数据 : 根据每列的内容生成SQL语句
本文介绍了使用Python Pandas处理数据收集任务中格式不统一的问题。针对两种情况:服务名对应多人拥有状态(1/0表示),以及服务名与人名重复列的情况,分别采用双层for循环和字典数据结构实现数据转换,最终生成Name对应的Services列表(逗号分隔)。此方法高效解决大量数据的人工处理难题,减少错误并提升效率。文中附带代码示例及执行结果截图,便于理解和实践。
|
22天前
|
JSON API 数据格式
Python 请求微店商品详情数据 API 接口
微店开放平台允许开发者通过API获取商品详情数据。使用Python请求微店商品详情API的主要步骤包括:1. 注册并申请API权限,获得app_key和app_secret;2. 确定API接口地址与请求参数,如商品ID;3. 生成签名确保请求安全合法;4. 使用requests库发送HTTP请求获取数据;5. 处理返回的JSON格式响应数据。开发时需严格遵循微店API文档要求。
|
18天前
|
数据采集 XML 存储
Python爬虫实战:一键采集电商数据,掌握市场动态!
这个爬虫还挺实用,不光能爬电商数据,改改解析规则,啥数据都能爬。写爬虫最重要的是要有耐心,遇到问题别着急,慢慢调试就成。代码写好了,运行起来那叫一个爽,分分钟几千条数据到手。
|
21天前
|
JSON 监控 API
python语言采集淘宝商品详情数据,json数据示例返回
通过淘宝开放平台的API接口,开发者可以轻松获取商品详情数据,并利用这些数据进行商品分析、价格监控、库存管理等操作。本文提供的示例代码和JSON数据解析方法,可以帮助您快速上手淘宝商品数据的采集与处理。
|
27天前
|
数据采集 供应链 API
实战指南:通过1688开放平台API获取商品详情数据(附Python代码及避坑指南)
1688作为国内最大的B2B供应链平台,其API为企业提供合法合规的JSON数据源,直接获取批发价、SKU库存等核心数据。相比爬虫方案,官方API避免了反爬严格、数据缺失和法律风险等问题。企业接入1688商品API需完成资质认证、创建应用、签名机制解析及调用接口四步。应用场景包括智能采购系统、供应商评估模型和跨境选品分析。提供高频问题解决方案及安全合规实践,确保数据安全与合法使用。立即访问1688开放平台,解锁B2B数据宝藏!
|
26天前
|
存储 数据采集 JSON
Python爬取某云热歌榜:解析动态加载的歌曲数据
Python爬取某云热歌榜:解析动态加载的歌曲数据
|
数据采集 Python Windows
python爬虫-抓取百度贴吧帖子图片
本爬虫可以爬取百度贴吧帖子中的图片,代码有待完善,欢迎大家指教! 出处:https://github.com/jingsupo/python-spider/blob/master/day03/07tieba.
1078 0