Python使用Selenium实现淘宝评论爬取教程
文章目录
前言
以下是一个基于 Selenium 的 Python 淘宝评论爬取教程,需要注意的是,爬取网站数据应当遵守网站的robots.txt规则和相关法律法规,淘宝有反爬机制,此教程仅用于学习交流。
1. 环境准备
安装 Python:
Python 3.12 下载地址:https://pan.quark.cn/s/c88059d33465
最新版本Python3.12安装教程:https://blog.csdn.net/xxjc2025/article/details/145763807
安装 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. 注意事项
作者:ππ记录