scrapy爬取豆瓣top250详情
时间: 2025-06-03 20:19:44 浏览: 18
### 使用Scrapy框架爬取豆瓣Top250电影的详细信息
要使用Scrapy框架爬取豆瓣Top250电影的详细信息,需要完成以下任务:项目初始化、定义数据模型(Item)、编写爬虫逻辑、解析网页内容以及存储数据。以下是具体的实现方法。
#### 1. 初始化Scrapy项目
首先,创建一个新的Scrapy项目,并生成一个用于爬取豆瓣Top250电影的爬虫。
```bash
scrapy startproject Douban_movie_top250
cd Douban_movie_top250
scrapy genspider douban_movie https://movie.douban.com/top250
```
#### 2. 定义数据模型(Item)
在`items.py`文件中定义需要爬取的数据字段。例如,电影名称、导演、主演、年份、产地、类型和评分等信息。
```python
import scrapy
class DoubanMovieItem(scrapy.Item):
rank = scrapy.Field() # 排名
name = scrapy.Field() # 名称
director = scrapy.Field() # 导演
actor = scrapy.Field() # 主演
year = scrapy.Field() # 年份
country = scrapy.Field() # 产地
type = scrapy.Field() # 类型
rating = scrapy.Field() # 评分
quote = scrapy.Field() # 经典语句
img_url = scrapy.Field() # 图片链接
```
此部分定义了爬取数据的结构[^5]。
#### 3. 编写爬虫逻辑
在`spiders/douban_movie.py`中编写爬虫代码。通过分析豆瓣Top250页面的HTML结构,可以确定每部电影的相关信息都在`<div class="info">`标签内[^3]。
以下是一个示例爬虫代码:
```python
import scrapy
from Douban_movie_top250.items import DoubanMovieItem
class DoubanMovieSpider(scrapy.Spider):
name = "douban_movie"
allowed_domains = ["movie.douban.com"]
start_urls = ["https://movie.douban.com/top250"]
def parse(self, response):
for movie in response.css("div.item"):
item = DoubanMovieItem()
item['rank'] = movie.css("em::text").get()
item['name'] = movie.css("span.title::text").get()
info = movie.css("div.bd p::text").getall()
item['director'] = info[0].split("\n")[1].strip().split(": ")[1]
item['actor'] = info[0].split("\n")[2].strip().split(": ")[1]
item['year'] = info[1].strip().split("/")[0]
item['country'] = info[1].strip().split("/")[1]
item['type'] = info[1].strip().split("/")[2]
item['rating'] = movie.css("span.rating_num::text").get()
item['quote'] = movie.css("span.inq::text").get()
item['img_url'] = movie.css("img::attr(src)").get()
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)
```
上述代码实现了对每一页电影信息的解析,并递归访问下一页以获取完整的Top250数据[^4]。
#### 4. 数据存储
Scrapy支持多种数据输出格式,如JSON、CSV或数据库。可以在`settings.py`中配置输出格式。例如,将数据保存为JSON文件:
```python
FEED_FORMAT = "json"
FEED_URI = "douban_top250.json"
```
#### 5. 运行爬虫
最后,运行爬虫并等待数据抓取完成。
```bash
scrapy crawl douban_movie
```
---
### 注意事项
- Scrapy框架的核心优势在于其异步请求处理能力,这使得它在大规模数据爬取时比传统的`requests`库更加高效[^2]。
- 在实际操作中,请确保遵守目标网站的`robots.txt`规则以及相关法律法规,避免对网站造成负担或违反隐私政策。
---
阅读全文
相关推荐

















