当前位置:网站首页 >  攻略

教你用Python零基础抓取淘宝差评数据做情感分析

时间:2026年06月11日 21:52:45 来源:易频IT社区

环境准备与依赖安装

在开始编写代码之前,必须先配置好Python运行环境。本指南基于Python 3.8版本开发,所有依赖库均通过pip进行安装。请打开终端(Terminal)或命令提示符(CMD),依次执行以下命令,确保所有组件安装完毕,缺少任何一个都会导致程序报错。

```bash pip install selenium==4.1.0 pip install pandas pip install snownlp pip install wordcloud pip install jieba pip install webdriver-manager ```

注意:selenium版本建议锁定在4.1.0,新版本可能存在ChromeDriver兼容性问题。webdriver-manager库会自动管理浏览器驱动,无需手动下载chromedriver.exe,这是实现“零门槛”的关键配置。

核心实现逻辑与反爬策略

淘宝对数据抓取的防护非常严格,直接请求接口会被立即拦截。我们采用Selenium自动化测试框架模拟真实用户行为。核心策略包括三点:

  • 模拟登录:强制开启浏览器界面,等待用户手动扫码登录,这是绕过滑块验证码最稳妥的方法。
  • 慢速滚动:模拟人工阅读速度,防止触发反爬脚本。
  • 结构化提取:利用XPath精准定位评论节点,而非正则匹配,提高数据准确性。

实操代码编写

以下代码将实现“打开商品页 -> 等待登录 -> 翻页抓取 -> 情感分析 -> 生成词云”的全流程。请将以下代码保存为 taobao_analysis.py

1. 导入库与初始化配置

这部分代码负责引入所需的模块,并设置浏览器的基础参数。为了防止被识别为机器人,我们需要禁用一些自动化特征。

```python import time import random import pandas as pd from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager from snownlp import SnowNLP from wordcloud import WordCloud import jieba import matplotlib.pyplot as plt 配置浏览器选项 options = webdriver.ChromeOptions() options.add_argument('--disable-blink-features=AutomationControlled') 禁用自动化特征 options.add_experimental_option("excludeSwitches", ["enable-automation"]) options.add_experimental_option('useAutomationExtension', False) 设置User-Agent,模拟Windows 10 Chrome环境 options.add_argument('user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36"') ```

2. 定义模拟登录与数据抓取函数

这是程序的核心。get_comments函数接收商品URL作为参数,启动浏览器并开始抓取。为了确保不漏掉数据,我们使用了显式等待(WebDriverWait)机制。

```python def get_comments(product_url): 初始化浏览器驱动 driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options) driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", { "source": """ Object.defineProperty(navigator, 'webdriver', { get: () => undefined }) """ }) driver.get(product_url) print(">>> 浏览器已打开,请在30秒内完成扫码登录!") 留出30秒时间供用户手动扫码 time.sleep(30) 点击“累计评价” tab,进入评论页 try: 尝试通过XPath找到评价Tab并点击 driver.find_element(By.XPATH, '//div[@id="detail"]//a[contains(@href, "reviews")]').click() time.sleep(2) except: print(">>> 未找到评价Tab,尝试直接滚动...") pass all_comments = [] page_num = 1 设置最大抓取页数,防止死循环,这里设为5页 while page_num <= 5: print(f"正在抓取第 {page_num} 页...") 模拟向下滚动,加载动态内容 driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") time.sleep(random.uniform(2, 4)) 随机休眠2-4秒 定位评论内容,注意:淘宝XPath结构可能变动,需根据实际情况调整 这里使用较为通用的class定位策略 try: comment_elements = driver.find_elements(By.CSS_SELECTOR, '.tm-m-reviews-item-content > div') for element in comment_elements: text = element.text.strip() if text: all_comments.append(text) except Exception as e: print(f"本页抓取异常: {e}") 尝试点击“下一页” try: next_btn = driver.find_element(By.CSS_SELECTOR, '.next-next:not(.next-disabled)') next_btn.click() time.sleep(random.uniform(3, 5)) page_num += 1 except: print(">>> 没有下一页或已到达末尾,抓取结束。") break driver.quit() return all_comments ```

3. 情感分析与词云生成

教你用Python零基础抓取淘宝差评数据做情感分析

抓取下来的原始文本需要清洗。我们利用 SnowNLP 库计算情感倾向(0-1分,低于0.6判定为负面/差评),然后利用 Jieba 分词和 WordCloud 绘制差评关键词云。

```python def analyze_and_visualize(comments): if not comments: print("未抓取到任何评论数据。") return print(f"共抓取到 {len(comments)} 条评论,开始分析...") bad_comments = [] sentiments = [] 筛选差评并分析情感 for text in comments: try: s = SnowNLP(text) score = s.sentiments sentiments.append(score) 设定阈值,情感分低于0.5的视为差评,或者包含特定关键词 if score < 0.5: bad_comments.append(text) except: continue print(f"筛选出潜在差评/负面评论 {len(bad_comments)} 条。") if len(bad_comments) == 0: print("没有发现明显的差评,数据质量很高。") return 生成词云 将所有差评拼接成一个字符串 text_content = " ".join(bad_comments) 分词 words = jieba.cut(text_content) cut_text = " ".join(words) 配置词云参数 注意:font_path必须指定系统中的中文字体路径,否则词云会乱码 Windows通常是 C:/Windows/Fonts/simhei.ttf (黑体) Mac通常是 /System/Library/Fonts/PingFang.ttc try: wc = WordCloud( font_path="C:/Windows/Fonts/simhei.ttf", background_color="white", width=800, height=600, max_words=100 ) wc.generate(cut_text) 显示图片 plt.imshow(wc, interpolation="bilinear") plt.axis("off") plt.show() wc.to_file("bad_reviews_wordcloud.png") print(">>> 词云已保存为 bad_reviews_wordcloud.png") except Exception as e: print(f"生成词云失败,请检查字体路径是否正确。错误信息: {e}") 保存数据到CSV df = pd.DataFrame({ 'content': comments, 'sentiment': sentiments }) df.to_csv('taobao_comments_analysis.csv', index=False, encoding='utf-8-sig') print(">>> 数据已保存为 taobao_comments_analysis.csv") ```

完整可执行代码

将上述模块整合,并添加主程序入口。你需要修改 target_url 为你想分析的淘宝商品详情页链接。

```python if __name__ == "__main__": 【关键步骤】替换这里为目标商品的URL 请务必使用完整的淘宝商品详情页链接 target_url = "https://detail.tmall.com/item.htm?id=123456789" print("程序启动...") comments_data = get_comments(target_url) analyze_and_visualize(comments_data) print("程序执行完毕。") ```

运行与操作指南

代码编写完成后,按照以下步骤执行,即可获得分析结果。

  1. 获取商品链接:在浏览器中打开你要分析的淘宝或天猫商品页面,复制地址栏中的完整URL。
  2. 替换代码中的URL:回到代码编辑器,找到 if __name__ == "__main__": 下方的 target_url,将刚才复制的链接粘贴进去,覆盖掉示例链接。
  3. 运行脚本:在终端执行命令 python taobao_analysis.py
  4. 手动扫码:程序启动后会自动弹出Chrome浏览器窗口。此时请不要关闭窗口,尽快使用手机淘宝扫描屏幕上的二维码进行登录。如果30秒内未登录,程序可能会报错。
  5. 等待结果:登录成功后,脚本会自动点击评价区域并翻页抓取。控制台会显示当前抓取进度。抓取完成后,会自动弹出词云图,并在同级目录下生成CSV文件和PNG图片。

常见报错处理细节

在实操过程中,可能会遇到以下环境问题,请对照解决方案处理:

  • 报错:Message: element not interactable

    原因:页面元素未加载完成或被遮挡。解决:在代码点击操作前增加 time.sleep(2),或者检查XPath是否因为淘宝改版而失效。

  • 报错:OSError: cannot open resource

    原因:词云找不到中文字体文件。解决:请确保 font_path 指向的路径在你的系统中真实存在。Windows用户可以通过C盘搜索 simhei.ttf 确认路径。

  • 数据为空

    原因:登录未成功或商品页没有评价Tab。解决:确保扫码后看到的是已登录状态,且该商品确实有买家秀/评价数据。

标签 淘宝差评

相关推荐

最新

热门

推荐

精选

标签

易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。

Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图