Selenium 爬取商品好评实战:从环境配置到代码详解

部署运行你感兴趣的模型镜像

大家好,今天我要分享一个使用 Selenium 爬取苏宁商品好评的实战案例。很多朋友在学习爬虫时,都会遇到动态加载页面的问题,而 Selenium 正是解决这类问题的利器。本文将从环境配置开始,逐行解析代码,带你掌握 Selenium 爬虫的核心知识点。

一、环境配置详解

在开始编写代码前,我们需要先搭建好开发环境,主要包括 Python、Selenium 库和浏览器驱动三个部分。

1. Python 安装

Selenium 是 Python 的一个第三方库,因此首先需要安装 Python。推荐安装 Python 3.7 及以上版本,你可以从Python 官网下载对应系统的安装包,按照提示一步步安装即可。

安装完成后,建议配置环境变量,这样可以在命令行中直接使用pythonpip命令。

2. Selenium 库安装

Python 安装完成后,打开命令行(Windows 系统可使用 Win+R 调出运行窗口,输入 cmd 回车),执行以下命令安装 Selenium:

pip install selenium

如果安装速度较慢,可以使用国内镜像源,例如:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple selenium

3. 浏览器驱动配置

Selenium 需要通过浏览器驱动来控制浏览器,本文使用的是 Edge 浏览器,因此需要下载 Edge 驱动。

  • 首先查看自己 Edge 浏览器的版本:打开 Edge,点击右上角三个点→设置→关于 Microsoft Edge,即可看到版本号。
  • 然后到Edge 驱动下载页面下载对应版本的驱动。
  • 下载后,将驱动文件(msedgedriver.exe)放在一个方便的目录,建议放在 Python 安装目录下,或者添加到系统环境变量中,这样后续代码中就不需要指定驱动路径了。

二、代码逐行解析

接下来,我们逐行解析这段爬取苏宁好评的代码,看看每一行都做了什么。

1. 导入所需库

from selenium import webdriver
from selenium.webdriver.edge.options import Options
from selenium.webdriver.common.by import By
import time
  • from selenium import webdriver:导入 webdriver 模块,它提供了各种浏览器的驱动接口,通过它可以实例化一个浏览器对象。
  • from selenium.webdriver.edge.options import Options:导入 Edge 浏览器的配置选项类,用于设置浏览器的启动参数。
  • from selenium.webdriver.common.by import By:导入 By 类,它提供了多种元素定位方式,如通过类名、ID、CSS 选择器等。
  • import time:导入时间模块,用于添加等待时间,让页面有足够时间加载。

2. 配置 Edge 浏览器选项

edge_options = Options()
edge_options.binary_location = r"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe"
  • edge_options = Options():创建一个 Edge 浏览器配置对象,通过这个对象可以设置浏览器的各种参数。
  • edge_options.binary_location:指定 Edge 浏览器的可执行文件路径。这一步不是必须的,如果你的 Edge 浏览器安装在默认路径,Selenium 通常能自动找到;但如果安装在非默认路径,就需要手动指定。这里的r表示字符串是原始字符串,避免路径中的反斜杠被转义。

3. 启动浏览器并打开目标页面

driver = webdriver.Edge(options=edge_options)  #启动Edge浏览器
driver.get("https://review.suning.com/cluster_cmmdty_review/cluster-38249278-000000012389328846-0000000000-1-good.htm?originalCmmdtyType=general&safp=d488778a.10004.loverRight.166")
  • driver = webdriver.Edge(options=edge_options):创建一个 Edge 浏览器驱动对象,也就是启动 Edge 浏览器,并应用之前设置的配置。
  • driver.get(url):调用 get 方法打开指定的 URL,这里是苏宁某商品的好评页面。

4. 添加等待时间

time.sleep(3)
  • time.sleep(3)表示程序暂停 3 秒。这是因为 Selenium 打开页面后,页面内容可能还在加载中,直接获取元素可能会失败,添加等待时间可以确保页面加载完成。

5. 创建文件对象

good_file = open('好评.txt','w')
  • open('好评.txt','w'):打开一个名为 “好评.txt” 的文件,'w'表示以写入模式打开。如果文件不存在,会创建该文件;如果文件已存在,会清空文件内容。
  • 将文件对象赋值给good_file,后续通过该对象向文件写入内容。

6. 定义获取好评的函数

def get_good(file):
    goods = driver.find_elements(By.CLASS_NAME, "body-content")
    for i in range(len(goods)):
        good = driver.find_elements(By.CLASS_NAME, "body-content")[i].text
        file.write(good+'\n')
  • 定义了一个名为get_good的函数,参数file是文件对象,用于将好评写入文件。
  • driver.find_elements(By.CLASS_NAME, "body-content"):通过类名 “body-content” 查找页面中所有的好评元素。find_elements返回的是一个元素列表,如果没有找到元素,返回空列表。
  • By.CLASS_NAME表示通过类名定位元素,这是 Selenium 常用的元素定位方式之一,其他方式还有 By.ID、By.CSS_SELECTOR、By.XPATH 等。
  • 然后通过 for 循环遍历元素列表,driver.find_elements(By.CLASS_NAME, "body-content")[i].text获取每个元素的文本内容(即好评内容)。
  • file.write(good+'\n'):将获取到的好评内容写入文件,并在每个好评后添加一个换行符,使内容更清晰。

7. 调用函数获取第一页好评

get_good(good_file)

调用get_good函数,传入之前创建的文件对象good_file,从而将第一页的好评写入 “好评.txt” 文件。

8. 处理分页

time.sleep(5)
nextbeaf=driver.find_element(By.CSS_SELECTOR, ".next.rv-maidian").click()
while True:
    try:
        # 等待页面加载
        time.sleep(1)
        # 获取当前页好评
        get_good(good_file)
        # 点击下一页
        driver.find_element(By.CSS_SELECTOR, ".next.rv-maidian").click()
    except:
        # 如果找不到下一页按钮,退出循环
        break
  • time.sleep(5):再次添加等待时间,确保页面稳定。
  • driver.find_element(By.CSS_SELECTOR, ".next.rv-maidian").click():通过 CSS 选择器定位到 “下一页” 按钮,并调用click()方法点击该按钮。这里的 CSS 选择器.next.rv-maidian表示 class 为 “next” 且 class 为 “rv-maidian” 的元素(即下一页按钮)。
  • while True::这是一个循环条件,本意是当存在下一页按钮时继续循环。

9. 关闭文件

good_file.close()
  • 完成爬取后,调用close()方法关闭文件,释放资源。

10.综合代码:

from selenium import webdriver
from selenium.webdriver.edge.options import Options
from selenium.webdriver.common.by import By
import time
edge_options = Options()
edge_options.binary_location = r"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe"
driver = webdriver.Edge(options=edge_options)  #启动Edge浏览器
driver.get("https://review.suning.com/cluster_cmmdty_review/cluster-38249278-000000012389328846-0000000000-1-good.htm?originalCmmdtyType=general&safp=d488778a.10004.loverRight.166")
time.sleep(3)
good_file = open('好评.txt','w')
def get_good(file):
    goods = driver.find_elements(By.CLASS_NAME, "body-content")
    for i in range(len(goods)):
        good = driver.find_elements(By.CLASS_NAME, "body-content")[i].text
        file.write(good+'\n')
get_good(good_file)
time.sleep(5)
nextbeaf=driver.find_element(By.CSS_SELECTOR, ".next.rv-maidian").click()
while True:
    try:
        # 等待页面加载
        time.sleep(1)
        # 获取当前页好评
        get_good(good_file)
        # 点击下一页
        driver.find_element(By.CSS_SELECTOR, ".next.rv-maidian").click()
    except:
        # 如果找不到下一页按钮,退出循环
        break

您可能感兴趣的与本文相关的镜像

Python3.11

Python3.11

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值