Python爬虫实战:抓取豆瓣电影《穿靴子的猫2》影评数据
使用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 著作权归作者所有。请勿转载和采集!