当前位置: 首页 > article >正文

亚马逊商品评论爬取与情感分析:Python+BeautifulSoup实战(含防封策略)

一、数据爬取模块(Python示例)

import requests
from bs4 import BeautifulSoup
import pandas as pd
import timeheaders = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36','Accept-Language': 'en-US'
}def scrape_amazon_reviews(product_id, max_pages=5):base_url = f"https://www.amazon.com/product-reviews/{product_id}"reviews = []for page in range(1, max_pages + 1):url = f"{base_url}/?pageNumber={page}"response = requests.get(url, headers=headers)soup = BeautifulSoup(response.text, 'html.parser')for review in soup.find_all('div', {'data-hook': 'review'}):review_data = {'rating': float(review.find('i', {'data-hook': 'review-star-rating'}).text.split()[0]),'title': review.find('a', {'data-hook': 'review-title'}).text.strip(),'body': review.find('span', {'data-hook': 'review-body'}).text.strip(),'date': review.find('span', {'data-hook': 'review-date'}).text}reviews.append(review_data)time.sleep(2)  # 降低请求频率return pd.DataFrame(reviews)

关键点说明

  • 需替换product_id为目标商品ASIN码

  • 通过time.sleep()规避反爬机制

  • 使用data-hook属性精准定位评论元素


二、情感分析模块(NLP示例)

from textblob import TextBlobdef analyze_sentiment(review_text):analysis = TextBlob(review_text)return {'polarity': analysis.sentiment.polarity,  # 情感极性(-1到1)'subjectivity': analysis.sentiment.subjectivity  # 主观性(0到1)}

输出应用

  • 极性>0.3判定为积极评论

  • 极性<-0.3判定为消极评论


三、数据可视化(Matplotlib示例)

import matplotlib.pyplot as pltdef plot_rating_distribution(df):plt.figure(figsize=(8, 4))df['rating'].value_counts().sort_index().plot(kind='bar', color='#FF9900')plt.title('Amazon Review Rating Distribution')plt.xlabel('Star Rating')plt.ylabel('Count')plt.xticks(rotation=0)plt.show()

四、合规性注意事项

  1. 遵守亚马逊Robots协议(检查/robots.txt

  2. 单IP请求频率建议≤2次/秒

  3. 商业用途需申请官方API(MWS或SP-API)

http://www.lryc.cn/news/2393976.html

相关文章:

  • STM32的DMA入门指南:让单片机学会“自动搬运“数据
  • 从虚拟化到云原生与Serverless
  • OpenAI o3安全危机:AI“抗命”背后的技术暗战与产业变局
  • Bootstrap:精通级教程(VIP10万字版)
  • 技术创新如何赋能音视频直播行业?
  • leetcode1201. 丑数 III -medium
  • ai工具集:AI材料星ppt生成,让你的演示更出彩
  • @Prometheus 监控操作系统-Exporter(Win Linux)
  • LINUX530 rsync定时同步 环境配置
  • CMG 机器人格斗大赛举行,宇树人形机器人参赛,比赛有哪些看点?对行业意味着什么?
  • Python——MySQL远程控制
  • 异常:UnsupportedOperationException: null
  • Ubuntu 24.04 LTS 和 ROS 2 Jazzy 环境中使用 Livox MID360 雷达
  • 自动化立体仓库堆垛机SRM控制系统FC19手动控制功能块开发
  • Ollama(1)知识点配置篇
  • VMware Workstation虚拟系统设置双网口
  • Qt基础终结篇:从文件操作到多线程异步UI,深度解析核心要点
  • ubuntu中,文本编辑器nano和vim区别,vim的用法
  • 山洪灾害声光电监测预警解决方案
  • 【Rust模式与匹配】Rust模式与匹配深入探索与应用实战
  • React从基础入门到高级实战:React 高级主题 - React Concurrent 特性:深入探索与实践指南
  • electron安装报错处理
  • NHANES指标推荐:CQI
  • 【OpenHarmony】【交叉编译】使用gn在Linux编译3568a上运行的可执行程序
  • Med-R1论文阅读理解-1
  • 【从零开始学习QT】快捷键、帮助文档、Qt窗口坐标体系
  • 强化学习笔记总结(结合论文)
  • Java线程安全解决方案全面指南
  • superior哥深度学习系列(大纲)
  • 基于stm32的多旋翼无人机(Multi-rotor UAV based on stm32)