爬取豆瓣电影排行榜Top250并存储到Excel文件中
在 Python 中,网络爬虫是一个非常常见的应用场景。本文将带您一步步爬取豆瓣电影排行榜前 250 的数据,并将其存储到 Excel 文件中。我们将使用 requests
库进行网页请求,BeautifulSoup
进行 HTML 解析,pandas
用于数据处理和存储。
1. 环境准备
首先,我们需要安装相关的 Python 库。如果您还没有安装这些库,可以使用以下命令进行安装:
pip install requests beautifulsoup4 pandas openpyxl
requests
用于发送 HTTP 请求并获取网页。BeautifulSoup
用于解析 HTML 文档。pandas
用于数据处理和保存为 Excel 文件。openpyxl
用于支持 Excel 文件的写入。
2. 编写爬虫代码
以下是完整的爬虫代码示例:
import requests
from bs4 import BeautifulSoup
import pandas as pd
def get_movie_data():
# 存储电影信息的列表
movies = []
# 豆瓣电影Top250的页面URL
base_url = "https://movie.douban.com/top250?start={}&filter="
for start in range(0, 250, 25):
url = base_url.format(start)
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
}
response = requests.get(url, headers=headers)
response.encoding = 'utf-8'
# 解析页面内容
soup = BeautifulSoup(response.text, 'html.parser')
# 获取电影条目
for item in soup.find_all('div', class_='item'):
title = item.find('span', class_='title').text # 电影标题
rating = item.find('span', class_='rating_num').text # 评分
quote = item.find('span', class_='inq') # 引语
quote = quote.text if quote else '' # 处理没有引语的情况
# 将电影信息添加到列表中
movies.append({
'标题': title,
'评分': rating,
'引语': quote
})
return movies
def save_to_excel(movies):
# 创建DataFrame
df = pd.DataFrame(movies)
# 将DataFrame保存为Excel文件
df.to_excel('豆瓣电影Top250.xlsx', index=False)
if __name__ == "__main__":
movie_data = get_movie_data()
save_to_excel(movie_data)
print("豆瓣电影排行榜Top250已成功保存到Excel文件中!")
3. 代码解析
3.1 获取电影数据
get_movie_data()
函数用于请求豆瓣电影Top250的页面并解析出电影的标题、评分和引语。我们通过 for
循环遍历从0到250的起始索引(每页25部影片),逐页获取电影信息。
3.2 存储到 Excel
save_to_excel(movies)
函数接收电影信息列表,将其转换为 pandas 的 DataFrame 格式,然后用 to_excel
方法将其保存为 Excel 文件。默认情况下,文件名为“豆瓣电影Top250.xlsx”。
3.3 主程序
在 if __name__ == "__main__":
段中,主程序调用两个函数,依次爬取数据并保存到 Excel 文件。
4. 运行代码
保存在 .py
文件中,运行该脚本后,您将看到控制台输出“豆瓣电影排行榜Top250已成功保存到Excel文件中!”,并在当前目录下生成一个 Excel 文件。
总结
通过以上的步骤,我们成功地爬取了豆瓣电影排行榜Top250的数据并将其存储到Excel文件中。这个过程涵盖了网络请求、HTML解析及数据存储等多个方面,熟悉这些操作将对学习和实践 Python 爬虫大有裨益。在实际应用中,请注意遵守网站的爬虫协议,避免给网站带来负担。