Scrapy框架爬虫爬取豆瓣电影
时间: 2025-07-06 14:03:18 浏览: 7
### 如何使用 Scrapy 框架爬取豆瓣电影数据
#### 1. 安装依赖环境
在开始之前,确保安装了 Python 和 Scrapy。可以通过以下命令安装 Scrapy:
```bash
pip install scrapy
```
如果是在 Windows 系统下运行,则还需要配置好 PyWin32 库以及其他可能需要的依赖工具[^2]。
---
#### 2. 创建 Scrapy 项目
通过 `scrapy startproject` 命令创建一个新的 Scrapy 项目:
```bash
scrapy startproject douban_movie
```
这会生成一个名为 `douban_movie` 的目录结构,其中包括多个文件夹和脚本文件,这些文件将被用来定义爬虫逻辑、目标 URL 列表以及解析规则等[^1]。
---
#### 3. 配置 Spider 文件
进入项目的 spiders 子目录并新建一个 spider 文件(例如命名为 `douban_top_250.py`),其基本模板如下所示:
```python
import scrapy
class DoubanTopSpider(scrapy.Spider):
name = 'douban_top' # 爬虫名称
allowed_domains = ['movie.douban.com'] # 允许访问的域名范围
start_urls = [
f'https://movie.douban.com/top250?start={page * 25}' for page in range(10)] # 构造分页链接列表
def parse(self, response):
movies = response.css('div.info') # 提取每部电影的信息节点
for movie in movies:
item = {
'title': movie.css('.hd a span.title::text').get(), # 获取电影标题
'director': movie.css('.bd p::text').re_first(r'(.*?)\s'), # 导演信息正则匹配
'score': movie.css('.rating_num::text').get(), # 用户评分
'description': movie.css('.inq::text').get() or '' # 描述语句
}
yield item
next_page = response.css('span.next a::attr(href)').get()
if next_page is not None:
yield response.follow(next_page, self.parse) # 自动跳转到下一页继续抓取
```
此代码片段实现了对豆瓣 Top 250 页面中每一部影片基本信息的抽取操作,并支持自动翻页功能[^4]。
---
#### 4. 设置 Items 类型
编辑位于 `items.py` 中的内容以声明所需字段类型。以下是示例版本之一:
```python
import scrapy
class MovieItem(scrapy.Item):
title = scrapy.Field() # 影片名
director = scrapy.Field() # 导演姓名
score = scrapy.Field() # 综合得分
description = scrapy.Field() # 推荐短评
```
这样做的目的是为了让后续管道处理阶段更加清晰明了地了解哪些属性应该保存下来[^4]。
---
#### 5. 启用 Pipelines 功能
打开 settings.py 并启用 pipelines 来持久化采集回来的结果至本地磁盘或者数据库当中去。比如可以直接导出成 JSON 文件形式:
```python
ITEM_PIPELINES = {'douban_movie.pipelines.DoubanMoviePipeline': 300}
FEED_FORMAT = 'json'
FEED_URI = './output/douban_movies.json'
```
同时记得实现对应的 Pipeline 方法于 custom_pipelines.py 内完成自定义存储行为[^3]。
---
#### 6. 执行爬虫任务
最后一步就是启动刚刚编写的爬虫程序啦!只需简单输入下列指令即可让整个流程跑起来:
```bash
scrapy crawl douban_top -o output.csv
```
以上即完成了基于 Scrapy 实现的一个基础版豆瓣电影排名榜数据收集器的设计过程概述。
---
### 注意事项
- **反爬机制规避**:由于目标站点可能存在一定的防护措施,因此建议适当降低请求频率并通过设置随机 User-Agent 头部等方式模拟真实浏览器访问模式。
- **法律合规性审查**:务必确认自己的行动符合相关法律法规要求,尊重原网站的服务条款规定[^2]。
---
阅读全文
相关推荐


















