用 Python 构建一个简单的爬虫:抓取豆瓣电影信息
爬虫是 Python 开发者的必备技能之一。本文将带你从零开始,构建一个简单的爬虫,用来抓取豆瓣电影 Top 250 的信息,包括电影名称、评分和简介。
目录
1. 项目简介
我们将构建一个爬虫,完成以下任务:
- 访问豆瓣电影 Top 250 页面
- 抓取每部电影的名称、评分、评论人数、导演信息等
- 将抓取到的信息保存到 CSV 文件中
2. 环境配置与依赖安装
安装 Python 环境
确保你的系统中已经安装了 Python(建议 3.7+ 版本)。
安装必要库
我们需要以下第三方库:
requests
:发送 HTTP 请求BeautifulSoup
:解析 HTML 内容pandas
:处理和保存数据
使用 pip 安装这些库:
pip install requests beautifulsoup4 pandas
3. 解析目标网站结构
打开豆瓣电影 Top 250 页面 https://movie.douban.com/top250。
通过浏览器开发者工具查看页面结构,发现每部电影的关键信息位于 <div class="info">
中。
<div class="info">
<div class="hd">
<a href="电影详情页链接">
<span class="title">电影名称</span>
</a>
</div>
<div class="bd">
<p class="star">
<span class="rating_num" property="v:average">评分</span>
</p>
<p class="">电影简介</p>
</div>
</div>
4. 编写爬虫代码
创建 douban_spider.py
文件,写入以下代码:
import requests
from bs4 import BeautifulSoup
import pandas as pd
# 爬取单页数据
def fetch_page(url):
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0 Safari/537.36'
}
response = requests.get(url, headers=headers)
response.raise_for_status() # 检查是否请求成功
return response.text
# 解析单页数据
def parse_page(html):
soup = BeautifulSoup(html, 'html.parser')
movies = []
for item in soup.find_all('div', class_='info'):
title = item.find('span', class_='title').get_text(strip=True)
rating = item.find('span', class_='rating_num').get_text(strip=True)
quote = item.find('span', class_='inq').get_text(strip=True) if item.find('span', class_='inq') else 'N/A'
movies.append({'Title': title, 'Rating': rating, 'Quote': quote})
return movies
# 主函数:爬取所有页面
def main():
base_url = "https://movie.douban.com/top250"
all_movies = []
for start in range(0, 250, 25): # 每页显示 25 部电影,共 10 页
url = f"{base_url}?start={start}"
print(f"Fetching {url}...")
html = fetch_page(url)
movies = parse_page(html)
all_movies.extend(movies)
return all_movies
if __name__ == "__main__":
movies = main()
print(f"Total movies fetched: {len(movies)}")
df = pd.DataFrame(movies)
df.to_csv('douban_movies.csv', index=False)
print("Movies saved to 'douban_movies.csv'")
5. 保存数据到 CSV 文件
我们使用 pandas
将抓取的数据保存到 CSV 文件中:
df = pd.DataFrame(movies)
df.to_csv('douban_movies.csv', index=False)
这会将电影信息保存到 douban_movies.csv
,方便后续分析和使用。
6. 运行与结果展示
运行爬虫
在终端运行以下命令:
python douban_spider.py
输出示例
控制台会显示爬取的进度,最终生成 douban_movies.csv
文件,其内容如下:
Title | Rating | Quote |
---|---|---|
肖申克的救赎 | 9.7 | 希望让人自由。 |
霸王别姬 | 9.6 | 风华绝代。 |
阿甘正传 | 9.5 | 一部美国近现代史。 |
7. 优化与扩展
-
增加爬取字段
比如电影的导演、主演、上映时间等,可以通过修改parse_page
函数抓取更多信息。 -
异常处理
如果某一页抓取失败,记录错误日志而非中断整个程序。 -
IP 代理与反爬机制
使用代理池防止 IP 被封禁,或者设置随机的请求头来模拟真实用户。 -
数据存储
将数据保存到数据库(如 MySQL 或 MongoDB),方便进一步查询和分析。
总结
通过本项目,你学会了如何使用 Python 构建一个基本的爬虫,抓取网页内容并保存到文件中。这个爬虫可以进一步优化和扩展,比如支持断点续传、动态页面处理等功能。快动手试试吧!
标签:douban,Python,电影,爬虫,抓取,movies,csv From: https://blog.csdn.net/mmc123125/article/details/144692129