import json
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 设置浏览器驱动
driver = webdriver.Chrome()

# 打开电影页面
driver.get('https://movie.douban.com/subject/25868125/')

# 点击进入全部影评
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CSS_SELECTOR, '.btn-all'))).click()

# 爬取数据并存储
data = []
page = 1
while True:
    # 等待所有评论加载
    WebDriverWait(driver, 10).until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, '.comment-item')))
    
    comments = driver.find_elements_by_css_selector('.comment-item')
    for comment in comments:
        name = comment.find_element_by_css_selector('.comment-info>a').text
        time = comment.find_element_by_css_selector('.comment-time').text
        content = comment.find_element_by_css_selector('.short').text
        data.append({'name': name, 'time': time, 'content': content})
    
    # 翻页
    try:
        driver.find_element_by_css_selector('.next>a').click()
        page += 1
    except:
        break

# 保存数据
with open('comments.json', 'w', encoding='utf-8') as f:
    json.dump(data, f, ensure_ascii=False)

# 关闭浏览器
driver.quit()

注意事项:

  1. 安装Selenium库: pip install selenium
  2. 确保已下载对应浏览器的驱动并配置环境变量。
  3. 使用WebDriverWait确保元素加载完成再进行操作,避免出现异常。
  4. 可以根据需要修改代码中使用的CSS选择器。
  5. 爬取数据时,应遵守网站的爬虫协议,避免给网站服务器带来过大压力。

原文地址: https://www.cveoy.top/t/topic/oA3j 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录