使用Python爬虫抓取豆瓣电影《穿靴子的猫2》影评数据

本教程将详细介绍如何使用Python爬虫技术,利用Selenium库和requests库,抓取豆瓣电影《穿靴子的猫2》的所有页面影评数据,并以JSON格式存储。

目标网站: 豆瓣电影《穿靴子的猫2》 目标数据: 评论人名称、评论时间以及评论内容

步骤1: 使用Selenium库点击进入电影全部影评

from selenium import webdriver

url = 'https://movie.douban.com/subject/25868125/'
driver = webdriver.Chrome()
driver.get(url)
all_reviews = driver.find_element_by_xpath('//*[@id="reviews"]/div[1]/a')
all_reviews.click()

步骤2: 抓取第一页评论数据

import time
import json

url = 'https://movie.douban.com/subject/25868125/comments?start=0&limit=20&status=P&sort=new_score'
driver = webdriver.Chrome()
driver.get(url)

reviews = []
for i in range(20):
    review = {}
    name = driver.find_element_by_xpath(f'//*[@id="comments"]/div[{i+1}]/div[2]/h3/span[2]/a')
    time = driver.find_element_by_xpath(f'//*[@id="comments"]/div[{i+1}]/div[2]/h3/span[2]/span[3]')
    content = driver.find_element_by_xpath(f'//*[@id="comments"]/div[{i+1}]/div[2]/p/span')
    review['name'] = name.text
    review['time'] = time.text
    review['content'] = content.text
    reviews.append(review)

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

步骤3: 抓取剩余页面评论数据

import time
import json

driver = webdriver.Chrome()

reviews = []
for page in range(2, 4):
    url = f'https://movie.douban.com/subject/25868125/comments?start={20*(page-1)}&limit=20&status=P&sort=new_score'
    driver.get(url)
    time.sleep(2)
    for i in range(20):
        review = {}
        name = driver.find_element_by_xpath(f'//*[@id="comments"]/div[{i+1}]/div[2]/h3/span[2]/a')
        time = driver.find_element_by_xpath(f'//*[@id="comments"]/div[{i+1}]/div[2]/h3/span[2]/span[3]')
        content = driver.find_element_by_xpath(f'//*[@id="comments"]/div[{i+1}]/div[2]/p/span')
        review['name'] = name.text
        review['time'] = time.text
        review['content'] = content.text
        reviews.append(review)

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

步骤4: 将数据以JSON格式存储在reviews.json文件中

以上代码将抓取到的评论数据存储在reviews.json文件中,每个评论包含评论人名称、评论时间以及评论内容。

注意:

  • 需要安装Selenium库和ChromeDriver驱动程序。
  • 可以根据需要修改代码,抓取更多页面的评论数据。
  • 可以根据需要对抓取到的数据进行进一步的分析和处理。

完整代码:

from selenium import webdriver
import time
import json

# 步骤1: 打开电影页面并点击全部影评
url = 'https://movie.douban.com/subject/25868125/'
driver = webdriver.Chrome()
driver.get(url)
all_reviews = driver.find_element_by_xpath('//*[@id="reviews"]/div[1]/a')
all_reviews.click()

# 步骤2: 抓取第一页评论数据
url = 'https://movie.douban.com/subject/25868125/comments?start=0&limit=20&status=P&sort=new_score'
driver.get(url)
reviews = []
for i in range(20):
    review = {}
    name = driver.find_element_by_xpath(f'//*[@id="comments"]/div[{i+1}]/div[2]/h3/span[2]/a')
    time = driver.find_element_by_xpath(f'//*[@id="comments"]/div[{i+1}]/div[2]/h3/span[2]/span[3]')
    content = driver.find_element_by_xpath(f'//*[@id="comments"]/div[{i+1}]/div[2]/p/span')
    review['name'] = name.text
    review['time'] = time.text
    review['content'] = content.text
    reviews.append(review)

# 步骤3: 抓取剩余页面评论数据
for page in range(2, 4):
    url = f'https://movie.douban.com/subject/25868125/comments?start={20*(page-1)}&limit=20&status=P&sort=new_score'
    driver.get(url)
    time.sleep(2)
    for i in range(20):
        review = {}
        name = driver.find_element_by_xpath(f'//*[@id="comments"]/div[{i+1}]/div[2]/h3/span[2]/a')
        time = driver.find_element_by_xpath(f'//*[@id="comments"]/div[{i+1}]/div[2]/h3/span[2]/span[3]')
        content = driver.find_element_by_xpath(f'//*[@id="comments"]/div[{i+1}]/div[2]/p/span')
        review['name'] = name.text
        review['time'] = time.text
        review['content'] = content.text
        reviews.append(review)

# 步骤4: 将数据以JSON格式存储在reviews.json文件中
with open('reviews.json', 'w', encoding='utf-8') as f:
    json.dump(reviews, f, ensure_ascii=False)

通过以上步骤,就可以成功抓取豆瓣电影《穿靴子的猫2》的影评数据,并以JSON格式存储。


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

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