主页 > 软件开发  > 

【爬虫】使用Scrapy框架爬取豆瓣电影Top250数据的完整教程

【爬虫】使用Scrapy框架爬取豆瓣电影Top250数据的完整教程
前言

在大数据和网络爬虫领域,Scrapy 是一个功能强大且广泛使用的开源爬虫框架。它能够帮助我们快速地构建爬虫项目,并高效地从各种网站中提取数据。在本篇文章中,我将带大家从零开始使用 Scrapy 框架,构建一个简单的爬虫项目,爬取 豆瓣电影 Top 250 的电影信息。

Scrapy 官方文档:Scrapy Documentation

豆瓣电影 Top 250 :豆瓣电影 Top 250

本文的爬虫项目配置如下:

系统:WindowsPython 版本:3.8.6开发环境:PyCharm

如果你使用的是其他系统或 IDE,也可以按照本文的步骤进行操作,只需根据自己的环境做出相应调整即可。

环境准备 1. 安装 Python

在使用 Scrapy 之前,确保你已经安装了 Python。如果没有,请先安装 Python 3.6+ 版本。你可以访问 Python 官方网站 下载并安装最新版的 Python。

安装完成后,打开命令行窗口,输入以下命令检查是否安装成功:

python --version 2. 安装 Scrapy

确认安装了 Python 后,你可以使用 pip 安装 Scrapy。pip 是 Python 的包管理工具,它能够帮助我们安装各种第三方库。

在命令行窗口输入以下命令:

pip install scrapy

安装完成后,可以通过以下命令检查 Scrapy 是否安装成功:

scrapy version 3. 安装 Anaconda(可选)

如果你更喜欢使用虚拟环境管理工具,可以选择安装 Anaconda,它能够帮助你更方便地管理项目中的 Python 依赖。你可以从 Anaconda 官方网站 下载并安装 Anaconda。

使用 Anaconda 创建一个虚拟环境,并激活环境后再安装 Scrapy:

conda create -n scrapy_env python=3.8 conda activate scrapy_env pip install scrapy 4. 创建 Scrapy 项目

安装 Scrapy 完成后,我们可以开始创建一个新的 Scrapy 项目。在终端中,进入你希望存放项目的目录,然后运行以下命令:

scrapy startproject DoubanProject

这将创建一个名为 DoubanProject 的 Scrapy 项目,其中包含 Scrapy 默认的文件夹和文件结构:

DoubanProject/ ├── DoubanProject/ │ ├── __init__.py │ ├── items.py │ ├── middlewares.py │ ├── pipelines.py │ ├── settings.py └── spiders/ ├── __init__.py └── douban.py 爬虫的编写 1. 编写 items.py

在 items.py 文件中定义我们要爬取的数据字段。豆瓣 Top 250 页面包含电影的排名、名称、简介、评分、评价人数和电影海报链接等信息,因此我们需要定义相应的数据字段。

import scrapy class DoubanprojectItem(scrapy.Item): rank = scrapy.Field() # 电影排名 movie_name = scrapy.Field() # 电影名称 movie_introduction = scrapy.Field() # 电影简介 picture = scrapy.Field() # 电影海报链接 movie_rating = scrapy.Field() # 电影评分 evaluators = scrapy.Field() # 评价人数 2. 编写爬虫文件 douban.py

在 spiders 目录下,我们需要创建一个爬虫文件 douban.py 来定义具体的爬虫逻辑。Scrapy 通过 Spider 类来定义爬虫,它包含了爬虫的名称、允许访问的域名、起始 URL,以及如何解析和处理抓取到的数据。

2.1 定义爬虫文件

首先,在 spiders 目录下创建 douban.py 文件,编写代码如下:

import scrapy from scrapy import Selector, Request from ..items import DoubanprojectItem # 导入之前定义的 item 数据结构 2.2 创建 DoubanSpider 类

在 douban.py 文件中定义一个爬虫类 DoubanSpider,继承自 scrapy.Spider。name 是爬虫的名字,用于在命令行中启动爬虫,allowed_domains 是允许爬虫访问的域名,start_urls 是爬虫开始爬取的页面 URL 列表。

class DoubanSpider(scrapy.Spider): name = "douban" # 爬虫的唯一名称 allowed_domains = ["movie.douban "] # 允许的域名范围 start_urls = [" movie.douban /top250"] # 爬虫从这个 URL 开始抓取 2.3 编写 parse 方法

parse 是 Scrapy 中的默认解析方法,爬虫启动后,Scrapy 会自动下载 start_urls 中的页面,并将响应传递给这个方法。在这里,我们会使用 XPath 来提取电影信息。

首先使用 Selector 对页面进行解析。

然后使用 XPath 提取页面中所有电影的列表,遍历每部电影并提取需要的字段信息,如电影的排名、名称、简介、评分等。

最后通过 yield 返回提取到的数据。

def parse(self, response): sel = Selector(response) # 使用 Selector 解析 HTML 响应 movie_items = sel.xpath('//div[@class="article"]//ol[@class="grid_view"]/li') # 提取所有电影条目 2.4 提取电影信息

接下来,我们需要提取每部电影的具体信息。我们定义了 DoubanprojectItem 来存储每部电影的字段信息,并通过 XPath 提取页面中的对应字段。

for movie in movie_items: item = DoubanprojectItem() # 创建 DoubanprojectItem 实例 # 提取电影的各个字段 item['rank'] = movie.xpath('.//div[@class="pic"]/em/text()').extract_first() # 电影排名 item['movie_name'] = movie.xpath('.//div[@class="hd"]//span[1]/text()').extract_first() # 电影名称 item['movie_introduction'] = movie.xpath('.//div[@class="bd"]//span[@class="inq"]/text()').extract_first(default='无') # 电影简介 item['picture'] = movie.xpath('.//div[@class="pic"]/a/img/@src').extract_first() # 电影海报链接 item['movie_rating'] = movie.xpath('.//div[@class="star"]/span[2]/text()').extract_first() # 电影评分 item['evaluators'] = movie.xpath('.//div[@class="star"]/span[4]/text()').extract_first() # 评价人数 # 返回提取到的 item yield item 2.5 处理分页

豆瓣电影的 Top 250 列表分成了 10 页,每页显示 25 部电影。在爬取完第一页后,我们需要继续爬取剩下的页面。通过提取页面底部的“下一页”链接,来实现分页抓取。

# 获取下一页的链接 next_link = sel.xpath('//span[@class="next"]/link/@href').extract_first() if next_link: # 如果存在下一页链接,构造请求并递归调用 parse 方法 yield Request(url=response.urljoin(next_link), callback=self.parse) 2.6 完整的 douban.py 文件

完整的爬虫文件 douban.py 如下:

import scrapy from scrapy import Selector, Request from ..items import DoubanprojectItem # 导入 item 数据结构 class DoubanSpider(scrapy.Spider): name = "douban" # 爬虫的名称 allowed_domains = ["movie.douban "] # 允许的域名 start_urls = [" movie.douban /top250"] # 爬虫起始页面 def parse(self, response): sel = Selector(response) # 解析页面 movie_items = sel.xpath('//div[@class="article"]//ol[@class="grid_view"]/li') # 获取电影条目列表 for movie in movie_items: item = DoubanprojectItem() # 创建 item 实例 # 提取电影信息 item['rank'] = movie.xpath('.//div[@class="pic"]/em/text()').extract_first() item['movie_name'] = movie.xpath('.//div[@class="hd"]//span[1]/text()').extract_first() item['movie_introduction'] = movie.xpath('.//div[@class="bd"]//span[@class="inq"]/text()').extract_first(default='无') item['picture'] = movie.xpath('.//div[@class="pic"]/a/img/@src').extract_first() item['movie_rating'] = movie.xpath('.//div[@class="star"]/span[2]/text()').extract_first() item['evaluators'] = movie.xpath('.//div[@class="star"]/span[4]/text()').extract_first() yield item # 返回 item # 处理分页 next_link = sel.xpath('//span[@class="next"]/link/@href').extract_first() if next_link: yield Request(url=response.urljoin(next_link), callback=self.parse)
详细解释: Spider 类定义:name 确定了爬虫的名字,allowed_domains 确定了允许的域名,start_urls 列出了爬虫的起始页面。parse 方法:通过 Selector 解析页面,使用 XPath 提取电影的详细信息并存储到 DoubanprojectItem 对象中。分页处理:通过检查是否有下一页链接,使用 Request 对象进行递归抓取,直到所有页面的数据都被抓取。
3. 编写 pipelines.py

在 Scrapy 中,pipelines.py 文件用于处理爬取到的数据。这里,我们要将抓取到的豆瓣电影数据保存到 Excel 文件中。为了实现这一点,我们会使用 Python 的 openpyxl 库,它是一个专门用于处理 Excel 文件的库。

3.1 安装 openpyxl

首先,确保你已经安装了 openpyxl,如果没有安装,可以通过 pip 进行安装:

pip install openpyxl 3.2 创建 DoubanprojectPipeline 类

DoubanprojectPipeline 类将处理从爬虫传递过来的数据,并将这些数据写入 Excel 文件。Scrapy 中的 Pipeline 类通常有三个方法:open_spider、process_item 和 close_spider。

open_spider:当爬虫启动时调用,一般用于初始化一些资源。process_item:每当爬虫抓取到一个数据项(item)时,都会调用此方法来处理该项数据。close_spider:当爬虫结束时调用,用于保存文件或释放资源。

以下是详细的代码解释:

import openpyxl # 导入处理 Excel 文件的库 from .items import DoubanprojectItem # 导入定义好的 Item 数据结构 class DoubanprojectPipeline: def __init__(self): """ 初始化方法,在爬虫开始时被调用,初始化 Excel 工作簿和表格。 """ self.wb = openpyxl.Workbook() # 创建一个新的 Excel 工作簿 self.sheet = self.wb.active # 获取工作簿的活动表格 self.sheet.title = '豆瓣电影Top250' # 设置表格的标题 # 在第一行写入表头,表示每列的意义 self.sheet.append(('电影排名', '电影名称', '电影简介', '电影海报', '电影评分', '观影人数')) def open_spider(self, spider): """ 当爬虫被启动时调用该方法。 :param spider: 当前运行的爬虫对象 """ print('开始爬虫...') # 可以选择在控制台输出提示信息,表示爬虫开始运行 def process_item(self, item: DoubanprojectItem, spider): """ 处理每个爬取到的数据项(item),将其保存到 Excel 文件中。 :param item: 爬取到的电影数据 :param spider: 当前运行的爬虫对象 :return: 返回处理后的 item """ # 将每部电影的信息以一行的形式写入 Excel self.sheet.append(( item['rank'], # 电影排名 item['movie_name'], # 电影名称 item['movie_introduction'], # 电影简介 item['picture'], # 电影海报链接 item['movie_rating'], # 电影评分 item['evaluators'] # 观影人数 )) # 返回 item 是 Scrapy Pipeline 的标准流程,方便后续可能有其他 pipeline 处理 return item def close_spider(self, spider): """ 当爬虫关闭时调用,保存 Excel 文件。 :param spider: 当前运行的爬虫对象 """ print("爬虫结束....") # 输出爬虫结束的提示 # 保存 Excel 文件到指定路径 self.wb.save('豆瓣电影数据.xlsx') 3.3 详细解释代码

__init__ 方法:

该方法在爬虫启动时初始化,创建一个 Excel 工作簿 (self.wb),并获取活动表 (self.sheet)。使用 self.sheet.title 为表格设置一个标题,在这里我们将其命名为 “豆瓣电影Top250”。使用 self.sheet.append() 将表头写入 Excel 文件,表头包括 “电影排名”、“电影名称”、“电影简介”、“电影海报”、“电影评分” 和 “观影人数”。

open_spider 方法:

在爬虫启动时执行,可以在这里做一些初始化操作,比如在控制台输出一个提示信息“开始爬虫…”。

process_item 方法:

每次爬虫抓取到一个新的电影数据项(item)时,Scrapy 会自动调用此方法来处理数据。self.sheet.append() 将数据项中的字段值(如排名、名称、简介等)写入 Excel 文件中的一行。返回 item 是 Scrapy Pipeline 的标准流程,以便数据继续传递给其他可能的 pipeline。

close_spider 方法:

当爬虫结束时,Scrapy 会调用此方法来进行收尾工作。这里使用 self.wb.save('豆瓣电影数据.xlsx') 将数据保存到 豆瓣电影数据.xlsx 文件中,并在控制台输出“爬虫结束…”提示。 3.4 设置 pipelines

为了让 Scrapy 使用我们的 DoubanprojectPipeline,我们需要在 settings.py 中启用该 Pipeline。

打开 settings.py 文件,并添加以下代码:

# 启用我们定义的 Pipeline ITEM_PIPELINES = { "DoubanProject.pipelines.DoubanprojectPipeline": 300, }

300 是该 Pipeline 的优先级,数字越小优先级越高。这里我们设置为 300,表示优先处理该 Pipeline。

通过这个 pipelines.py 文件,爬取到的豆瓣电影数据将会被逐条写入 Excel 文件。当爬虫结束时,完整的 Excel 文件就已经生成好了,里面包含了所有抓取到的电影信息。


4. 配置 settings.py

为了确保爬虫能够顺利地抓取豆瓣的电影数据并避免触发反爬机制,我们需要对 settings.py 文件进行配置。settings.py 文件是 Scrapy 项目的全局配置文件,所有的爬虫行为(如请求频率、请求头信息、爬虫管道等)都在这里进行设置。下面我们详细解释如何配置 settings.py。

4.1 配置 BOT_NAME

BOT_NAME 定义了 Scrapy 项目的名称,Scrapy 会根据这个名称来识别项目。你可以将其保持默认或根据你的项目需求进行修改:

BOT_NAME = "DoubanProject" 4.2 配置 SPIDER_MODULES 和 NEWSPIDER_MODULE

SPIDER_MODULES 和 NEWSPIDER_MODULE 定义了爬虫的存放路径和默认新爬虫生成位置。

SPIDER_MODULES: 该配置定义了存放所有爬虫的模块。在这里,所有爬虫都存放在 DoubanProject.spiders 目录下。

NEWSPIDER_MODULE: 该配置定义了新生成的爬虫的默认存放位置。

SPIDER_MODULES = [“DoubanProject.spiders”] NEWSPIDER_MODULE = “DoubanProject.spiders”

4.3 设置 User-Agent

User-Agent 是 HTTP 请求头中的一个重要字段,它告诉目标服务器你的请求来自哪个浏览器或客户端。很多网站会通过检测 User-Agent 来区分正常用户和爬虫。为了避免被识别为爬虫,我们可以将 User-Agent 字段伪装成常见的浏览器。

USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.61 Safari/537.36'

在上面的配置中,我们将 User-Agent 伪装成了 Google Chrome 浏览器。这有助于提高爬虫的隐蔽性,避免被目标网站的反爬虫机制识别和封禁。

4.4 禁用 robots.txt 规则

许多网站使用 robots.txt 文件来限制爬虫访问某些页面。为了能够抓取豆瓣的内容,我们需要将 Scrapy 的 ROBOTSTXT_OBEY 设置为 False,忽略 robots.txt 规则。

ROBOTSTXT_OBEY = False

注意:尽管我们在这里禁用了 robots.txt,实际开发时应尽量遵循网站的爬虫规则,避免给网站带来过多负担。

4.5 设置下载延迟 DOWNLOAD_DELAY

为了避免触发网站的反爬虫机制,建议设置一个下载延迟。DOWNLOAD_DELAY 定义了每个请求之间的时间间隔,防止爬虫请求频率过高,给服务器带来过大压力。通常,1-3 秒的延迟是合理的选择。

DOWNLOAD_DELAY = 2 # 设置每个请求之间的时间间隔为 2 秒

你还可以设置 RANDOMIZE_DOWNLOAD_DELAY 为 True,让每次请求之间的延迟时间随机变化,这样可以进一步避免被反爬虫机制发现。

RANDOMIZE_DOWNLOAD_DELAY = True 4.6 启用 Cookies

有些网站会使用 Cookies 来跟踪用户的行为和状态。如果不启用 Cookies,有时会导致爬取数据不完整或被限制访问。我们在这里启用 Scrapy 的 COOKIES_ENABLED 设置:

COOKIES_ENABLED = True

这将允许爬虫在请求过程中自动处理 Cookies。

4.7 启用 Item Pipelines

Item Pipelines 负责处理爬虫提取到的数据,并将其保存到不同的输出格式中。在这里,我们已经在 pipelines.py 中编写了一个 Pipeline 来将电影数据保存到 Excel 文件中。接下来需要在 settings.py 中启用这个 Pipeline。

ITEM_PIPELINES = { "DoubanProject.pipelines.DoubanprojectPipeline": 300, }

数字 300 代表优先级,Scrapy 会根据优先级的数字大小依次执行不同的 Pipelines。数字越小,优先级越高。

4.8 配置其他默认设置

最后,确保 Scrapy 的其他设置与最新版本兼容。这里我们设置了 REQUEST_FINGERPRINTER_IMPLEMENTATION 和 TWISTED_REACTOR,它们是 Scrapy 的内部配置,用于确保兼容性和性能优化。

# 设置未来兼容性 REQUEST_FINGERPRINTER_IMPLEMENTATION = "2.7" TWISTED_REACTOR = "twisted.internet.asyncioreactor.AsyncioSelectorReactor" FEED_EXPORT_ENCODING = "utf-8" # 确保导出文件的编码为 UTF-8
修改后的 settings.py 文件完整代码: BOT_NAME = "DoubanProject" SPIDER_MODULES = ["DoubanProject.spiders"] NEWSPIDER_MODULE = "DoubanProject.spiders" # 伪装成正常的浏览器 USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.61 Safari/537.36' # 不遵守 robots.txt 规则 ROBOTSTXT_OBEY = False # 启用 Cookies COOKIES_ENABLED = True # 配置下载延迟,避免被封禁 DOWNLOAD_DELAY = 2 # 每次请求间隔2秒 RANDOMIZE_DOWNLOAD_DELAY = True # 随机化下载延迟 # 配置默认请求头,模拟真实用户 DEFAULT_REQUEST_HEADERS = { 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', 'Accept-Language': 'zh-CN,zh;q=0.9', 'Referer': ' .douban /', } # 启用下载中间件 DOWNLOADER_MIDDLEWARES = { 'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware': None, 'scrapy.downloadermiddlewares.cookies.CookiesMiddleware': 700, } # 启用 Item Pipelines ITEM_PIPELINES = { "DoubanProject.pipelines.DoubanprojectPipeline": 300, } # 启用 AutoThrottle 扩展,控制并发请求速度 AUTOTHROTTLE_ENABLED = True AUTOTHROTTLE_START_DELAY = 5 # 初始延迟 AUTOTHROTTLE_MAX_DELAY = 60 # 最大延迟 AUTOTHROTTLE_TARGET_CONCURRENCY = 1.0 # 每个服务器的并发请求数量 AUTOTHROTTLE_DEBUG = False # 禁用调试信息显示 # HTTP缓存设置(可选) HTTPCACHE_ENABLED = False # 设置未来兼容性 REQUEST_FINGERPRINTER_IMPLEMENTATION = "2.7" TWISTED_REACTOR = "twisted.internet.asyncioreactor.AsyncioSelectorReactor" FEED_EXPORT_ENCODING = "utf-8" 终端运行爬虫 douban : scrapy crawl douban

运行后,爬虫将抓取豆瓣电影 Top 250 的数据并保存到 豆瓣电影数据.xlsx 文件中。

导入 MySQL 数据库

在本节中,我们将介绍如何将抓取的豆瓣电影数据保存到 MySQL 数据库中。Scrapy 提供了灵活的管道机制,可以将抓取的数据导入到多种存储平台。通过下面的步骤,我们将爬取的数据存储到 MySQL 数据库中。

1. 在 MySQL 中创建数据库

首先,确保你已经安装并启动了 MySQL 数据库。在 MySQL 中,我们需要创建一个数据库和对应的数据表来存储抓取到的电影信息。

创建数据库:

-- MySQL 8.0 及以上版本 create database douban_movie; -- 如果你使用的是 MySQL 8.0 以下版本,请使用以下命令指定编码为 utf8mb4 create database douban_movie default charset=utf8mb4;

切换到你创建的数据库:

use douban_movie; 2. 在数据库中创建数据表

在刚刚创建的 douban_movie 数据库中,我们需要创建一个表 movie_data 来存储爬取到的电影信息。表结构如下:

CREATE TABLE movie_data( rank varchar(20), -- 电影排名 movie_name varchar(30), -- 电影名称 movie_introduction varchar(100), -- 电影简介 picture varchar(100), -- 电影海报链接 movie_rating varchar(100), -- 电影评分 evaluators varchar(100) -- 评价人数 ) character set=utf8; 3. 修改 pipelines.py,将数据保存到 MySQL

接下来,我们需要在 pipelines.py 文件中编写代码,将爬取到的数据保存到 MySQL 数据库中。我们会使用 pymysql 库来操作 MySQL。

安装 pymysql:

pip install pymysql

然后,在 pipelines.py 文件中添加如下代码:

import pymysql from .items import DoubanprojectItem # 导入定义好的 item 数据结构 class MysqlPipeline: def __init__(self, host, database, user, password, port): """ 初始化 MySQL 数据库连接配置 """ self.host = host self.database = database self.user = user self.password = password self.port = port @classmethod def from_crawler(cls, crawler): """ 从 Scrapy 项目的 settings.py 文件中读取 MySQL 的连接信息 """ return cls( host=crawler.settings.get('MYSQL_HOST'), database=crawler.settings.get('MYSQL_DATABASE'), user=crawler.settings.get('MYSQL_USER'), password=crawler.settings.get('MYSQL_PASSWORD'), port=crawler.settings.get('MYSQL_PORT') ) def open_spider(self, spider): """ 爬虫启动时打开数据库连接 """ print('打开数据库连接....') self.db = pymysql.connect(host=self.host, user=self.user, password=self.password, database=self.database, port=self.port, charset='utf8') self.cursor = self.db.cursor() def close_spider(self, spider): """ 爬虫结束时关闭数据库连接 """ print('关闭数据库连接...') self.db.close() def process_item(self, item, spider): """ 将爬取到的 item 存储到 MySQL 数据库 """ data = dict(item) keys = ', '.join(data.keys()) # 获取字段名 values = ', '.join(['%s'] * len(data)) # 构建 SQL 中的值部分 sql = "insert into movie_data (%s) values (%s)" % (keys, values) self.cursor.execute(sql, tuple(data.values())) # 执行 SQL 插入语句 self.db mit() # 提交事务 return item # 继续传递给下一个 pipeline(如果有的话) 4. 配置 settings.py 文件

为了让 Scrapy 能够将数据写入 MySQL,我们需要在 settings.py 文件中进行一些配置。首先,启用 MysqlPipeline,然后配置 MySQL 数据库的连接信息。

在 settings.py 中添加如下内容:

# 启用 MysqlPipeline 管道,将数据存入 MySQL ITEM_PIPELINES = { "DoubanProject.pipelines.MysqlPipeline": 301, } # 配置 MySQL 数据库的连接信息 MYSQL_HOST = 'localhost' # MySQL 服务器的地址 MYSQL_DATABASE = 'douban_movie' # 使用的数据库名 MYSQL_PORT = 3306 # MySQL 端口号,默认是3306 MYSQL_USER = 'root' # 你的 MySQL 用户名 MYSQL_PASSWORD = 'your password' # 你的 MySQL 密码 5. 运行爬虫并将数据导入 MySQL

现在你可以通过以下命令运行爬虫:

scrapy crawl douban

等待爬虫运行完毕后,打开你的 MySQL 数据库,使用以下 SQL 查询命令查看爬取到的数据:

SELECT * FROM movie_data;

你也可以使用 MySQL Workbench 或 Navicat 等图形化工具查看数据。


终端运行爬虫 douban

在所有的代码编写和配置完成后,我们就可以运行爬虫来抓取数据并保存到 Excel 文件和 MySQL 数据库中。以下是运行爬虫的步骤:

1. 进入项目目录

首先,确保你的终端已经定位到项目的根目录,也就是包含 scrapy.cfg 文件的目录。可以通过命令行进入项目根目录:

cd path/to/your/DoubanProject

将 path/to/your/DoubanProject 替换为你实际的项目路径。

2. 运行爬虫

在项目目录下,通过以下命令启动爬虫:

scrapy crawl douban

此时,爬虫将开始访问豆瓣电影的 Top 250 页面,逐页抓取电影信息。抓取到的数据将被同时保存到 Excel 文件 (豆瓣电影数据.xlsx) 中,以及 MySQL 数据库(如果配置了 MySQL 管道)。

3. 查看生成的 Excel 文件

在爬虫运行完成后,Excel 文件将会保存在项目目录下,文件名为 豆瓣电影数据.xlsx。

你可以使用 WPS Office、Microsoft Excel 或任何支持 Excel 文件的软件来打开这个文件。

使用 WPS 打开 Excel 文件: 在文件资源管理器中,找到 豆瓣电影数据.xlsx 文件。右键单击文件,选择 “打开方式”,然后选择 WPS 表格。你将看到抓取的豆瓣电影排名、名称、简介、评分、观影人数等数据都已经填充在表格中。

Excel 文件的内容应该类似如下:

电影排名

电影名称

电影简介

电影海报

电影评分

观影人数

1

肖申克的救赎

自由万岁!

图片链接

9.7

5000000+

2

霸王别姬

风华绝代

图片链接

9.6

4000000+

4. 检查数据库中的数据

如果你配置了 MySQL 管道,数据也会被存入 MySQL 数据库。你可以通过以下命令在 MySQL 中检查数据:

USE douban_movie; SELECT * FROM movie_data;

此时,终端将展示爬虫保存到数据库中的数据内容。

5. 爬虫运行提示信息

当你在终端运行爬虫时,你还会在终端中看到相关的运行日志,这些日志会提示爬虫的当前状态,比如:

正在抓取的页面 URL。每一页抓取的数量。数据是否成功保存。爬虫完成时的提示信息。

注意:使用爬虫工具时,请务必遵守目标网站的 robots.txt 文件以及相关法律法规,避免对网站造成过度负载。

标签:

【爬虫】使用Scrapy框架爬取豆瓣电影Top250数据的完整教程由讯客互联软件开发栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“【爬虫】使用Scrapy框架爬取豆瓣电影Top250数据的完整教程