豆瓣电影评分爬取Python实现教程
1. 简介
在本文中,我将向你介绍如何使用Python爬取豆瓣电影的评分数据。这是一个非常常见的爬虫任务,对于刚入行的小白来说,这是一个很好的练习项目。
2. 流程概述
在开始之前,我们先来了解一下整个爬取过程的流程。下面是一个简单的流程图,展示了实现该任务的步骤。
flowchart TD
subgraph 准备工作
A[导入所需库]
end
subgraph 获取电影列表
B[发送HTTP请求]
C[解析HTML]
end
subgraph 爬取电影评分
D[发送HTTP请求]
E[解析JSON数据]
end
subgraph 保存数据
F[将数据保存至文件或数据库]
end
3. 具体步骤
3.1 准备工作
在开始编写代码之前,我们需要导入一些必要的库。在这个任务中,我们需要使用requests
库发送HTTP请求,以及BeautifulSoup
库解析HTML。如果你还没有安装这些库,请先进行安装。
import requests
from bs4 import BeautifulSoup
3.2 获取电影列表
在爬取电影评分之前,我们首先需要获取电影列表。我们可以通过发送HTTP请求获取豆瓣电影的页面,然后使用BeautifulSoup
解析HTML,提取电影列表。
# 发送HTTP请求
url = '
response = requests.get(url)
# 解析HTML
soup = BeautifulSoup(response.text, 'html.parser')
movie_list = soup.find_all('div', class_='hd')
在上述代码中,我们首先发送了一个GET请求到豆瓣电影的Top250页面。然后,使用BeautifulSoup
解析HTML,并使用find_all
方法获取所有电影的标题。
3.3 爬取电影评分
获取到电影列表之后,我们可以继续爬取每个电影的评分。为了实现这一步,我们需要再次发送HTTP请求,但这次我们需要发送到电影的详情页面,并解析返回的JSON数据。
for movie in movie_list:
# 获取电影详情页链接
movie_url = movie.a['href']
# 发送HTTP请求
response = requests.get(movie_url)
# 解析JSON数据
movie_info = response.json()
rating = movie_info['rating']['average']
# 输出评分
print('电影评分:', rating)
在上述代码中,我们使用了一个循环来遍历电影列表。在每次循环中,我们首先获取电影的详情页链接,并发送HTTP请求。然后,解析返回的JSON数据,提取评分信息。最后,我们将评分信息输出到控制台。
3.4 保存数据
最后,我们可以选择将爬取到的数据保存下来,以便后续使用。这可以通过将数据保存到文件或数据库来实现。
import csv
# 创建CSV文件
with open('movie_ratings.csv', 'w', newline='', encoding='utf-8') as file:
writer = csv.writer(file)
# 写入表头
writer.writerow(['电影标题', '电影评分'])
for movie in movie_list:
# 获取电影详情页链接
movie_url = movie.a['href']
# 发送HTTP请求
response = requests.get(movie_url)
# 解析JSON数据
movie_info = response.json()
title = movie_info['title']
rating = movie_info['rating']['average']
# 写入数据行
writer.writerow([title, rating])
在上述代码中,我们使用了csv
库来创建一个CSV文件,并使用writer
对象写入数据。在每次循环中,我们将电影的标题和评分写入一行。
4. 总结
恭喜你!你已经学会了如何使用Python爬取豆瓣电影的评分数据。通过本文的教程,你应该对爬虫的基本原理有了更深入的理解