当前位置: 首页 > article >正文

基于Selenium的Python淘宝评论爬取教程

文章目录

  • 前言
  • 1. 环境准备
    • 安装 Python:
    • 安装 Selenium:
    • 下载浏览器驱动:
  • 2. 实现思路
  • 3. 代码实现
  • 4. 代码解释
  • 5. 注意事项


前言

以下是一个基于 Selenium 的 Python 淘宝评论爬取教程,需要注意的是,爬取网站数据应当遵守网站的robots.txt规则和相关法律法规,淘宝有反爬机制,此教程仅用于学习交流。


1. 环境准备

安装 Python:

  • 确保你的系统已经安装了 Python 3.x 版本。

Python 3.12 下载地址:https://pan.quark.cn/s/c88059d33465

最新版本Python3.12安装教程:https://blog.csdn.net/xxjc2025/article/details/145763807

安装 Selenium:

  • 在命令行中使用以下命令安装 Selenium 库。

pip install selenium

下载浏览器驱动:

Selenium 需要对应的浏览器驱动来控制浏览器,这里以 Chrome 浏览器为例,你需要下载 ChromeDriver,下载后将其所在路径添加到系统环境变量中。

2. 实现思路

  • 登录淘宝账号。
  • 搜索商品并进入商品详情页。
  • 切换到商品评论页面。
  • 循环爬取评论信息。

3. 代码实现

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time

# 配置 Chrome 浏览器选项
options = webdriver.ChromeOptions()
# 可以根据需要设置无头模式等
# options.add_argument('--headless')

# 创建 Chrome 浏览器实例
driver = webdriver.Chrome(options=options)

# 打开淘宝登录页面
driver.get('https://login.taobao.com/member/login.jhtml')

# 等待用户手动登录
input("请手动完成登录,登录完成后按回车键继续...")

# 搜索商品
search_keyword = "手机"
search_box = driver.find_element(By.ID, 'q')
search_box.send_keys(search_keyword)
search_box.send_keys(Keys.RETURN)

# 等待搜索结果页面加载
time.sleep(3)

# 选择第一个商品并进入详情页
first_product = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.CSS_SELECTOR, '.J_ItemPicA'))
)
first_product.click()

# 切换到新打开的窗口
driver.switch_to.window(driver.window_handles[-1])

# 等待商品详情页加载
time.sleep(3)

# 切换到评论页面
try:
    comment_tab = WebDriverWait(driver, 10).until(
        EC.element_to_be_clickable((By.LINK_TEXT, '评论'))
    )
    comment_tab.click()
except Exception as e:
    print(f"切换到评论页面失败: {e}")

# 循环爬取评论信息
page_num = 1
while True:
    try:
        # 等待评论加载
        WebDriverWait(driver, 10).until(
            EC.presence_of_element_located((By.CSS_SELECTOR, '.rate-grid .tm-rate-content'))
        )

        # 获取当前页面的评论
        comments = driver.find_elements(By.CSS_SELECTOR, '.rate-grid .tm-rate-content')
        for comment in comments:
            print(comment.text)

        # 尝试点击下一页按钮
        next_page_button = WebDriverWait(driver, 10).until(
            EC.element_to_be_clickable((By.CSS_SELECTOR, '.pg-next'))
        )
        if 'pg-disabled' in next_page_button.get_attribute('class'):
            print("已经是最后一页,爬取结束")
            break
        next_page_button.click()
        page_num += 1
        time.sleep(3)
    except Exception as e:
        print(f"爬取第 {page_num} 页评论时出错: {e}")
        break

# 关闭浏览器
driver.quit()

4. 代码解释

  • 登录部分:打开淘宝登录页面后,由于淘宝有较为严格的登录验证机制,这里采用手动登录的方式,等待用户完成登录操作后按回车键继续。
  • 搜索商品:通过定位搜索框,输入关键词并回车进行搜索。
  • 进入商品详情页:选择搜索结果中的第一个商品并点击进入详情页。
  • 切换到评论页面:在商品详情页中找到 “评论” 标签并点击切换到评论页面。
  • 爬取评论:循环获取当前页面的评论信息,并尝试点击下一页按钮,直到没有下一页为止。

5. 注意事项

  • 反爬机制:淘宝有反爬机制,频繁的请求可能会导致 IP 被封禁。可以设置合理的请求间隔时间,或者使用代理 IP 来避免被封禁。
  • 页面元素定位:淘宝页面结构可能会发生变化,需要根据实际情况调整元素定位方式。
  • 数据存储:可以将爬取到的评论信息存储到文件或数据库中,方便后续分析和使用。

http://www.kler.cn/a/568193.html

相关文章:

  • 【AI+智造】基于SKF IMAX-16+PT1000与Odoo18工业物联网架构智慧生产诊断系统集成方案
  • ubuntu 20.04 安装labelmg
  • C# Unity 唐老狮 No.1 模拟面试题
  • 【论文阅读笔记】FcaNet: Frequency Channel Attention Networks(2021/7/23)
  • Deepseek开源周第四天:从 DualPipe 到 EPLB
  • 查找Excel包含关键字的行(の几种简单快速方法)
  • 北京中烟创新科技有限公司:荣誉与创新并行
  • 考研复试问题总结-数据结构(1)
  • 【一条龙教程】用AI DS+创作原创音乐 (配合Midjourney漫画)制作原创MTV
  • 构建神经网络之Matplotlib(持续完善)
  • 为什么Agent会失败?2025年对AI的预测
  • wordpress按不同页调用不同的标题3种形式
  • 【银河麒麟高级服务器操作系统】服务器测试业务耗时问题分析及处理全流程分享
  • 神经网络代码入门解析
  • 同时导出Oracle,PostgreSQL库中相同的表位CSV后调用Beyond Compare脚本对比
  • 国高材服务:新能源汽车连接器电气腐蚀性能评价
  • latex 环境配置
  • 0x03 http协议和分层架构
  • ALM研发管理:全新甘特图,让项目管理更高效
  • 接口返回结构的命名问题