Python Selenium 爬取商品评价数据实战
使用 Python 和 Selenium 库爬取电商商品好评与差评数据,解决动态页面交互难题。流程包括配置浏览器驱动、初始化 WebDriver、定位评价内容节点及翻页逻辑,将文本保存为文件。获取的数据可作为情感分析的训练样本,结合词向量转换与分类模型实现自动情感判断。实施时需遵守反爬协议并注意代码鲁棒性。

使用 Python 和 Selenium 库爬取电商商品好评与差评数据,解决动态页面交互难题。流程包括配置浏览器驱动、初始化 WebDriver、定位评价内容节点及翻页逻辑,将文本保存为文件。获取的数据可作为情感分析的训练样本,结合词向量转换与分类模型实现自动情感判断。实施时需遵守反爬协议并注意代码鲁棒性。

在自然语言处理(NLP)领域,情感分析是极具实用价值的方向之一。例如输入一段商品评价,自动判断其是好评还是差评。而情感分析的前提,是要有高质量的标注数据。本文将分享如何通过 Python+Selenium 爬取苏宁商品的好评与差评数据,为后续词向量转换、情感分类模型训练做好数据准备。
要实现'输入一段话判断好评 / 差评'的功能,首先需要大量的好评、差评文本数据作为训练样本。本次目标是爬取苏宁商品评价页面的好评和差评内容,保存为文本文件,供后续词向量转换(如 Word2Vec、TF-IDF)和模型训练使用。
苏宁的评价页面采用动态加载机制,单纯的 requests 库难以处理翻页等交互操作;而 Selenium 可以模拟浏览器行为,完成页面加载、点击翻页等操作,适合这类动态页面的爬取。本次选用 Edge 浏览器(也可替换为 Chrome/Firefox)。
首先安装 Selenium 库,执行以下命令:
pip install selenium
以本地 Edge 浏览器为例:
"""-------------------好评-----------------------"""
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"<本地 Edge 浏览器安装路径>"
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"<本地 Edge 浏览器安装路径>"
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()
Options 指定 Edge 浏览器路径,初始化驱动对象;driver.get() 打开好评页面 URL;优质评价.txt,指定 encoding='utf-8' 避免中文乱码;get_py_content 函数,通过 class_name="body-content" 定位评价内容并写入文件;next-disable 类(禁用则为最后一页),若未禁用则点击翻页,重新提取内容,直到爬完所有页;差评部分的代码结构与好评完全一致,仅修改了 URL(-bad.htm)、保存文件名(差评.txt)和函数名(get_cp_content),通过同样的翻页逻辑完成差评数据的爬取。
爬取的 优质评价.txt 和 差评.txt 是情感分析的核心数据源,后续可做以下处理:
将文本数据转换为计算机可识别的向量形式:
以'好评 = 1,差评 = 0'为标签,将词向量输入分类模型(如逻辑回归、SVM、LSTM),训练后即可实现'输入一段话判断好评 / 差评'的功能。
robots.txt 协议,控制爬取速度(避免短时间高频请求),仅用于学习研究,禁止商用;class 名称变化),需重新定位评价节点和翻页按钮;try-except 捕获页面加载超时、元素定位失败等异常,提升代码鲁棒性。本文通过 Python+Selenium 实现了商品好评 / 差评的爬取,核心是利用 Selenium 处理动态页面的翻页交互,通过定位 body-content 类提取评价文本,结合 next-disable 类判断翻页终点。爬取的文本数据是情感分析的基础,后续结合词向量转换和分类模型,即可完成'文本情感判断'的核心需求。
对于 NLP 初学者而言,数据爬取是情感分析的第一步,掌握这类实战场景的爬虫技巧,能为后续的模型训练和应用落地打下坚实基础。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online