开箱即用!商品评价爬虫实战,好评差评数据直接拿
目录
前言
在自然语言处理(NLP)领域,情感分析是极具实用价值的方向之一 —— 比如输入一段商品评价,自动判断其是好评还是差评。而情感分析的前提,是要有高质量的标注数据;本文将分享如何通过 Python+Selenium 爬取苏宁商品的好评与差评数据,为后续词向量转换、情感分类模型训练做好数据准备。
一、核心思路与技术选型
1. 需求背景
要实现 “输入一段话判断好评 / 差评” 的功能,首先需要大量的好评、差评文本数据作为训练样本。本次目标是爬取苏宁商品评价页面的好评和差评内容,保存为文本文件,供后续词向量转换(如 Word2Vec、TF-IDF)和模型训练使用。
2. 技术选型:Selenium
苏宁的评价页面采用动态加载机制,单纯的 requests 库难以处理翻页等交互操作;而 Selenium 可以模拟浏览器行为,完成页面加载、点击翻页等操作,适合这类动态页面的爬取。本次选用 Edge 浏览器(也可替换为 Chrome/Firefox)。
二、环境准备
1. 安装依赖库
首先安装 Selenium 库,执行以下命令:
pip install selenium2. 配置浏览器驱动
以我本地的edge浏览器为例:
- 下载 Edge 驱动:需匹配本地 Edge 浏览器版本(下载地址);

找到你的浏览器的版本,然后下载对应版本的驱动,如果没有就找相近的安装。edge驱动

- 驱动配置:可将驱动文件放到 python下的安装目录(如本文中
"C:\Users\19414\AppData\Local\Programs\Python\Python39"),或配置系统环境变量。

下载完后解压,然后把msedgedriver.exe放到你的python安装路径下


三、代码实现:爬取好评与差评
1. 完整代码(附详细注释)
"""-------------------好评-----------------------""" from selenium import webdriver from selenium.webdriver.common.by import By import time from selenium.webdriver.edge.options import Options edg_options = Options() # 指定本地Edge浏览器安装路径(根据自己的路径修改) edg_options.binary_location = r"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe" driver = webdriver.Edge(options=edg_options) #驱动好评的网址 driver.get('https://review.suning.com/cluster_cmmdty_review/cluster-38249278-000000012389328846-0000000000-1-good.htm?originalCmmdtyType=general&safp=d488778a.10004.loverRight.166') ##注意:添加 encoding='utf-8' 避免中文乱码 yp_file = open('优质评价.txt', 'w', encoding='utf-8') def get_py_content(file): pj_content = driver.find_elements(by=By.CLASS_NAME, value="body-content") for i in range(len(pj_content)): file.write(str(pj_content[i].text + '\n')) get_py_content(yp_file) next_elements = driver.find_elements(By.XPATH, "//*[contains(@class, 'next') and contains(@class, 'rv-maidian')]") while next_elements != []: next_element = next_elements[0] # 新增:判断按钮是否为禁用状态(next-disable) if "next-disable" in next_element.get_attribute("class"): print("已到最后一页,停止爬取") break # 如果未禁用,再执行点击 time.sleep(1) next_element.click() get_py_content(yp_file) # 重新查找下一页按钮 next_elements = driver.find_elements(By.XPATH, "//*[contains(@class, 'next') and contains(@class, 'rv-maidian')]") yp_file.close() driver.quit() '''--------------差评-------------------''' from selenium import webdriver from selenium.webdriver.common.by import By import time from selenium.webdriver.edge.options import Options edg_options = Options() edg_options.binary_location = r"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe" driver = webdriver.Edge(options=edg_options) #驱动差评的网址 driver.get('https://review.suning.com/cluster_cmmdty_review/cluster-38249278-000000012389328846-0000000000-1-bad.htm?originalCmmdtyType=general&safp=d488778a.10004.loverRight.166') cp_file = open("差评.txt", "w", encoding='utf-8') def get_cp_content(file): cp_content = driver.find_elements(by=By.CLASS_NAME, value="body-content") for i in range(len(cp_content)): file.write(str(cp_content[i].text + '\n')) get_cp_content(cp_file) next_elements = driver.find_elements(By.XPATH, "//*[contains(@class, 'next') and contains(@class, 'rv-maidian')]") while next_elements != []: next_element = next_elements[0] if "next-disable" in next_element.get_attribute("class"): print("最后一页") break time.sleep(1) next_element.click() get_cp_content(cp_file) next_elements = driver.find_elements(By.XPATH, "//*[contains(@class, 'next') and contains(@class, 'rv-maidian')]") cp_file.close() driver.quit()
2. 代码核心拆解
(1)好评爬取逻辑
- 浏览器初始化:通过
Options指定 Edge 浏览器路径,初始化驱动对象; - 页面访问:使用
driver.get()打开好评页面 URL; - 文件写入:打开
优质评价.txt,指定encoding='utf-8'避免中文乱码; - 内容提取:定义
get_py_content函数,通过class_name="body-content"定位评价内容并写入文件; - 翻页逻辑:通过 XPath 定位 “下一页” 按钮,判断是否包含
next-disable类(禁用则为最后一页),若未禁用则点击翻页,重新提取内容,直到爬完所有页; - 资源释放:关闭文件和浏览器驱动。
(2)差评爬取逻辑
差评部分的代码结构与好评完全一致,仅修改了 URL(-bad.htm)、保存文件名(差评.txt)和函数名(get_cp_content),通过同样的翻页逻辑完成差评数据的爬取。
四、数据的后续应用
爬取的优质评价.txt和差评.txt是情感分析的核心数据源,后续可做以下处理:
1. 词向量转换
将文本数据转换为计算机可识别的向量形式:
- 传统方法:TF-IDF、Bag of Words(词袋模型);
- 深度学习方法:Word2Vec、BERT 预训练模型。
2. 情感分类模型训练
以 “好评 = 1,差评 = 0” 为标签,将词向量输入分类模型(如逻辑回归、SVM、LSTM),训练后即可实现 “输入一段话判断好评 / 差评” 的功能。
五、注意事项
- 反爬合规:爬取数据时需遵守苏宁的
robots.txt协议,控制爬取速度(避免短时间高频请求),仅用于学习研究,禁止商用; - 元素定位适配:若苏宁页面结构更新(如
class名称变化),需重新定位评价节点和翻页按钮; - 驱动版本匹配:Edge 驱动版本需与本地浏览器版本一致,否则会导致驱动初始化失败;
- 异常处理:实际应用中可添加
try-except捕获页面加载超时、元素定位失败等异常,提升代码鲁棒性。
六、总结
本文通过 Python+Selenium 实现了苏宁商品好评 / 差评的爬取,核心是利用 Selenium 处理动态页面的翻页交互,通过定位body-content类提取评价文本,结合next-disable类判断翻页终点。爬取的文本数据是情感分析的基础,后续结合词向量转换和分类模型,即可完成 “文本情感判断” 的核心需求。
对于 NLP 初学者而言,数据爬取是情感分析的第一步,掌握这类实战场景的爬虫技巧,能为后续的模型训练和应用落地打下坚实基础。