scrapy
2020-07-13 15:34:32 2 举报
AI智能生成
scrapy框架图
作者其他创作
大纲/内容
scrapy
检测是否有废弃的配置信息
从环境变量获取配置 ,没有就读取项目下的scrapy.cfg配置文件
加载commands包下面的所有命令模块
取出命令行中输入的命令字符串
框架中命令角色不使用全局的设置,使用自己的设置
对命令的选项进行解析,根据命令选项来设置一些行为的状态,启动一些选项对应的命令,同时会抓取命令错误,打印错误
用于处理一个进程中运行多个爬虫工具
同时会抓捕错误,打印帮助信息
(1)加载框架配置信息
(2)check_deprecated_settings
(3)inside_project()
(4)_get_commands_dict
子主题
(5)_pop_command_name
(6)对于命令行输入的命令进行检测
(7)scrapy中cmd命令设置自己的命令配置
(8)创建命令选项解析器,添加到命令中去
(9)_run_print_help
(10)创建一个crawlerprocess(爬虫控制者)工具,放在command命令中
(11)执行cmd输入的命令,crawl,开始爬虫
(12)sys.exit整个程序退出
框架运行结束:engine.close_spider
(0)打印日志关闭spider进行中
(1)关闭slot对象,关闭slot返回的是一个deferred对象
(2)创建一个打印关闭失败日志的函数,添加到回调中去
(3)添加各种角色回调关闭
(4)添加回调,回调内容是发送关闭spider的信号
(5)添加回调,关闭scrapy.statscollectors.MemoryStatsCollector,调用它的close函数
(6)打印日志spider已关闭的信息
(7)将slot角色的引用清空
关闭一个对象或者一个角色工具模块之前,先要判断这个模块是否已经关闭。
downloader,scraper,scheduler,
这应该是状态信息收集工具
传送信息处理框架:crawler.crawl
(1)判断当前爬虫是否在运行,运行报错
(2)创建spider,engine
(3)从spider中取出所有初始化的请求
(1)判断当前的engine是否可以在处理新的spider
(2)创建了一个nextcall对象
(3)创建scheduler调度器
(4)创建一个slot对象
(5)调用scheduler.open()
一个engine只能用于处理一个spider,看当前引擎中是否有slot对象
不清楚这个对象是什么作用
主要是创建一个内存队列,一个本地磁盘队列,创建一个请求指纹过滤器
(5)defer.maybeDeferred(engine.start())启动引擎
(6)出现任何异常,爬虫停下来,关闭引擎
crawl模块中command,run函数
reactor用于注册事件,注销事件,以及启动循环监听事件,网络请求
(1)判断命令的参数是有问题,有问题就告知正确使用方法
(3)判断创建的crawler是否正常crawl异常的话就设置异常退出code
(4)调用crawler_process.start()这个函数启动异步网络框架的reactor,并且安装dns的缓冲
(5)判断crawler_process是否引导加载异常,或者它有出现异常,有的话就设置退出码是1
收藏
0 条评论
回复 删除
下一页