背景
在自然语言处理(NLP)领域,情感分析是极具实用价值的方向之一。例如输入一段商品评价,自动判断其是好评还是差评。而情感分析的前提,是要有高质量的标注数据。本文将分享如何通过 Python+Selenium 爬取苏宁商品的好评与差评数据,为后续词向量转换、情感分类模型训练做好数据准备。
一、核心思路与技术选型
1. 需求背景
要实现'输入一段话判断好评 / 差评'的功能,首先需要大量的好评、差评文本数据作为训练样本。本次目标是爬取苏宁商品评价页面的好评和差评内容,保存为文本文件,供后续词向量转换(如 Word2Vec、TF-IDF)和模型训练使用。
2. 技术选型:Selenium
苏宁的评价页面采用动态加载机制,单纯的 requests 库难以处理翻页等交互操作;而 Selenium 可以模拟浏览器行为,完成页面加载、点击翻页等操作,适合这类动态页面的爬取。本次选用 Edge 浏览器(也可替换为 Chrome/Firefox)。
二、环境准备
1. 安装依赖库
首先安装 Selenium 库,执行以下命令:
pip install selenium
2. 配置浏览器驱动
以本地 Edge 浏览器为例:
- 下载 Edge 驱动:需匹配本地 Edge 浏览器版本。
- 驱动配置:可将驱动文件放到 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"<本地 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")
i ((pj_content)):
file.write((pj_content[i].text + ))
get_py_content(yp_file)
next_elements = driver.find_elements(By.XPATH, )
next_elements != []:
next_element = next_elements[]
next_element.get_attribute():
()
time.sleep()
next_element.click()
get_py_content(yp_file)
next_elements = driver.find_elements(By.XPATH, )
yp_file.close()
driver.quit()
selenium webdriver
selenium.webdriver.common.by By
time
selenium.webdriver.edge.options Options
edg_options = Options()
edg_options.binary_location =
driver = webdriver.Edge(options=edg_options)
driver.get()
cp_file = (, , encoding=)
():
cp_content = driver.find_elements(by=By.CLASS_NAME, value=)
i ((cp_content)):
file.write((cp_content[i].text + ))
get_cp_content(cp_file)
next_elements = driver.find_elements(By.XPATH, )
next_elements != []:
next_element = next_elements[]
next_element.get_attribute():
()
time.sleep()
next_element.click()
get_cp_content(cp_file)
next_elements = driver.find_elements(By.XPATH, )
cp_file.close()
driver.quit()


