1、进阶学习(由进行目标路由爬取信息,转变成工程化爬取)
2、Scrapy 简介
- Scrapy 是一个用于提取网页数据的快速、高效的爬虫框架。它提供了强大的功能和灵活的配置,使得爬虫开发更加系统化和工程化。
- Scrapy 的设计理念是将爬虫任务拆分成若干独立的组件,每个组件负责不同的任务,通过管道将这些组件连接起来,完成整个爬虫任务。
面试考点:
1.引擎向spider要url
2.引擎将要爬取的url给调度器
3.调度器会将url生成请求对象放入到指定的队列中
4.从队列中出队一个请求
5.引擎将请求交给下载器进行处理
6.下载器发送请求获取互联网数据
7.下载器将数据返回给引擎
8.引擎将数据再次给到spiders
9.spiders通过xpath解析该数据,得到数据或者url
10.spiders将数据或者url给到引擎
11.引擎判断是数据还是url,是数据,交给管道(item pipeline)处理;是url,交给调度器处理
3、Scrapy 的特点
模块化设计:Scrapy 将爬虫任务分解成多个独立的模块,每个模块负责特定的任务,如请求调度、数据提取、数据存储等。
高效的异步处理:Scrapy 使用 Twisted 框架实现异步网络请求,提高了爬虫的效率和速度。
强大的数据提取:Scrapy 提供了强大的选择器(如 XPath、CSS 选择器),方便从网页中提取所需数据。
灵活的配置:Scrapy 支持多种配置方式,可以根据需求灵活调整爬虫的行为。
4、Scrapy 的工作流程
Requests (请求):
爬虫(Spider)生成初始的请求(Requests)并将其提交给引擎(Engine)。 这些请求包括需要爬取的 URL 以及如何处理响应(Response)的回调函数。
Scheduler (调度器):
引擎将请求传递给调度器(Scheduler)。
调度器负责管理这些请求,并按优先级将其排列,等待处理。
Requests (请求):
调度器将请求交回给引擎,按顺序处理。
Downloader Middleware (下载中间件):
请求经过下载中间件(Downloader Middleware)进行预处理。
下载中间件可以在请求发送前添加、修改请求头等操作。
Downloader (下载器):
引擎将请求发送给下载器(Downloader),下载器负责向目标网站发送 HTTP 请求并获取响应。 下载器将响应返回给引擎。
Response (响应):
响应经过下载中间件进行后处理,然后返回给引擎。 引擎将响应发送给爬虫进行处理。
Spiders (爬虫):
爬虫接收到响应后,使用预先定义的回调函数解析响应,提取数据或生成新的请求。 解析后的数据可以直接生成 Items,新的请求会返回给引擎继续处理。
Item Pipelines (项目管道):
爬虫生成的 Items 通过引擎传递给项目管道(Item Pipelines)。 项目管道负责处理、清洗、验证、存储这些 Items。
5、Scrapy 的核心组件
在深入学习如何使用 Scrapy 之前,我们先了解一下 Scrapy 的核心组件。
3.1 Spider
Spider 是 Scrapy 中最核心的组件,负责定义爬取逻辑和数据提取规则。每个 Spider 都是一个独立的类,继承自 scrapy.Spider,并实现一些关键的方法,如 start_requests 和 parse。
3.2 Item
Item 是用来定义抓取的数据结构的类。它类似于数据库中的表结构,用于存储爬取到的数据。
3.3 Item Pipeline
Item Pipeline 用于处理和存储抓取到的数据。它是一个独立的模块,负责对 Item 进行处理,例如清洗数据、验证数据和将数据存储到数据库中。
3.4 Selector
Selector 是 Scrapy 提供的数据提取工具,用于从 HTML 或 XML 文档中提取数据。Selector 支持 XPath 和 CSS 选择器两种方式。
3.5 Downloader Middleware
Downloader Middleware 是 Scrapy 中用于处理请求和响应的中间件。它可以在请求发送之前和响应到达之后进行处理,例如添加请求头、处理重定向等。
3.6 Scheduler
Scheduler 是 Scrapy 中用于管理请求队列的组件。它负责将请求添加到队列中,并按照一定的顺序发送请求。
3.7 Engine
Engine 是 Scrapy 的核心引擎,负责协调 Spider、Scheduler、Downloader 和 Item Pipeline 之间的工作流。
6、基本四个步骤
新建项目 (scrapy startproject xxx):新建一个新的爬虫项目
明确目标 (编写items.py):明确你想要抓取的目标
制作爬虫 (spiders/xxspider.py):制作爬虫开始爬取网页
存储内容 (pipelines.py):设计管道存储爬取内容
7、认识文件
mySpider/
scrapy.cfg
mySpider/
__init__.py
items.py
pipelines.py
settings.py
spiders/
__init__.py
...
scrapy.cfg: 项目的配置文件。
mySpider/: 项目的Python模块,将会从这里引用代码。
mySpider/items.py: 项目的目标文件。
mySpider/pipelines.py: 项目的管道文件。
mySpider/settings.py: 项目的设置文件。
mySpider/spiders/: 存储爬虫代码目录。
8、pycharm安装scrapy遇到的问题及解决
pycharm安装scrapy包时,遇到“超时”(time out),所以我决定将源改成国内源,又快又好使。
仅需两行代码:
pip install --upgrade pip
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple