scrapy框架原理
scrapy
数据的流程
- scrapy初始的内容是添加在 spiders内部的, 它的初始的url的获取通过两种方式, 第一种就是: start_urls, 第二种就是: 函数 start_request()
- spiders会将url 传递并存储到sheduler中, scheduler就是一个存储url(Request)的队列.
- scheduler 中的url, 我们会获取这些url放到downloader中去下载页面. CONCURRENT_REQUESTS就是downloader中同时下载的页面的最大值.
- downloader在下载结束之后, 会将下载后的response返回给spiders.
- downloader 在下载之前会经过 download middware, 可以在这里添加1, headers, 2, 代理
- spiders在获取到response之后, 会解析这个response, 获取特定需要的信息并生成items, yield item
- 在spiders获取到response之后, 还有可能生成新的url, 就再次执行2.
- item会被传递到item pipeline中, item pipeline会执行后续的操作(可能是存储, 展示, 函数).
每一个部分的作用于他们的输入输出
1 spiders:
- url生成的地方
- 返回值解析的地方
- item生成
输入:
- start_urls , start_request
- response(downloader给的)
输出:
- request
- item
2 Scheduler
- 存储Request
输入:
url(Request) 输入的模块是:spiders, pipeline, downloader
输出:4
url (Request) 输出的模块只有downloader
3 Downloader
- 接受Request, 并下载这个Request
- 将response返回给spiders
输入:
Request, 来源是scheduler
输出:
response: 接收方spiders
request 接收方就是scheduler
4 itempipline
- 获取到item之后, 将它(存储, 展示, 其它)
输入:
item, spiders生成的
输出:
不确定, (数据库, 文件, 其它)
Request, 给scheduler
5 downloader middlewares
- 当scheduler的request经过的时候, 此时还没下载页面, 我们可以对Request进行修改 process_request
- 当 downloader 下载页面结束的时候, 也会经过downloader middlewares 我们可以根据response的内容做一些处理 process_response
- 当下载的过程中出现了异常, 也会经过downloader middlewares, process_exception
6 spiders middlewares
- 当Reuqest从spider发给sheduler的时候, 会经过spiders middleware, 可以做的操作是过滤Request, 去重等
- 当downloader 返回response的时候, 也能经过spiders middlewares, 这里一样是可以做一些根据返回值的过滤操作.
回顾之前的scrapy
数据的流程
- scrapy初始的内容是添加在 spiders内部的, 它的初始的url的获取通过两种方式, 第一种就是: start_urls, 第二种就是: 函数 start_request()
- spiders会将url 传递并存储到sheduler中, scheduler就是一个存储url(Request)的队列.
- scheduler 中的url, 我们会获取这些url放到downloader中去下载页面. CONCURRENT_REQUESTS就是downloader中同时下载的页面的最大值.
- downloader在下载结束之后, 会将下载后的response返回给spiders.
- downloader 在下载之前会经过 download middware, 可以在这里添加1, headers, 2, 代理
- spiders在获取到response之后, 会解析这个response, 获取特定需要的信息并生成items, yield item
- 在spiders获取到response之后, 还有可能生成新的url, 就再次执行2.
- item会被传递到item pipeline中, item pipeline会执行后续的操作(可能是存储, 展示, 函数).
每一个部分的作用于他们的输入输出
1 spiders:
- url生成的地方
- 返回值解析的地方
- item生成
输入:
- start_urls , start_request
- response(downloader给的)
输出:
- request
- item
2 Scheduler
- 存储Request
输入:
url(Request) 输入的模块是:spiders, pipeline, downloader
输出:4
url (Request) 输出的模块只有downloader
3 Downloader
- 接受Request, 并下载这个Request
- 将response返回给spiders
输入:
Request, 来源是scheduler
输出:
response: 接收方spiders
request 接收方就是scheduler
4 itempipline
- 获取到item之后, 将它(存储, 展示, 其它)
输入:
item, spiders生成的
输出:
不确定, (数据库, 文件, 其它)
Request, 给scheduler
5 downloader middlewares
- 当scheduler的request经过的时候, 此时还没下载页面, 我们可以对Request进行修改 process_request
- 当 downloader 下载页面结束的时候, 也会经过downloader middlewares 我们可以根据response的内容做一些处理 process_response
- 当下载的过程中出现了异常, 也会经过downloader middlewares, process_exception
6 spiders middlewares
- 当Reuqest从spider发给sheduler的时候, 会经过spiders middleware, 可以做的操作是过滤Request, 去重等
- 当downloader 返回response的时候, 也能经过spiders middlewares, 这里一样是可以做一些根据返回值的过滤操作.