import time from selenium import webdriver import json

初始化webdriver

driver = webdriver.Chrome('D:/chromedriver.exe')

定义url和headers

url = 'https://movie.douban.com/subject/25868125/comments?start=&limit=20&status=P&sort=new_score' headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:109.0) Gecko/20100101 Firefox/114.0'}

打开网页

driver.get(url)

定义一个空列表,用来保存所有评论

comments = []

循环遍历网页,每一点一次“下一页”按钮就保存一次数据

count = 0 # 计数器 while True: # 等待网页加载完成 time.sleep(3) # 获取所有评论项 comment_items = driver.find_elements_by_css_selector('.comment-item') # 遍历所有评论项,保存每一条评论的信息 for item in comment_items: comment = { 'username': item.find_element_by_css_selector('.comment-info > a').text, # 评论人的名称 'datetime': item.find_element_by_css_selector('.comment-info > span').text.strip(), # 评论时间 'content': item.find_element_by_css_selector('.short').text # 评论内容 }

    comments.append(comment)

count += 1
if count == 3: # 只爬取前三页的评论
    break

try:
    # 查找下一页按钮
    next_page_btn = driver.find_element_by_css_selector('.next')

    # 如果下一页按钮不可以点击,则说明到了最后一页循环停止
    if 'disabled' in next_page_btn.get_attribute('class'):
        break

    # 否则,点击下一页
    next_page_btn.click()
except:
    break

关闭

driver.quit()

将评论保存为json格式文件

with open('comments.json', 'w', encoding='utf-8') as f: json.dump(comments, f, ensure_ascii = False) print('Done')


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

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