豆瓣电影评论爬取 - 只爬取前三页
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 著作权归作者所有。请勿转载和采集!