scrapy
2020-07-13 15:34:32 2 举报
AI智能生成
scrapy框架图
作者其他创作
大纲/内容
入口函数cmdline:execute(argv=None, settings=None)
(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整个程序退出
入口函数cmdline:execute(argv=None, settings=None)
(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角色的引用清空
传送信息处理框架:crawler.crawl
(1)判断当前爬虫是否在运行,运行报错
子主题
子主题
(2)创建spider,engine
(3)从spider中取出所有初始化的请求
(4)engine.open_spider,传入spider和初始化request,返回deferred对象
(1)判断当前的engine是否可以在处理新的spider
(2)创建了一个nextcall对象
(3)创建scheduler调度器
(4)创建一个slot对象
(5)调用scheduler.open()
子主题
(5)defer.maybeDeferred(engine.start())启动引擎
(6)出现任何异常,爬虫停下来,关闭引擎
crawl模块中command,run函数
(1)判断命令的参数是有问题,有问题就告知正确使用方法
(2)启动crawlerprocess的crawl函数,给定spider的名字,创建spider,crawler,运行crawler
(3)判断创建的crawler是否正常crawl异常的话就设置异常退出code
(4)调用crawler_process.start()这个函数启动异步网络框架的reactor,并且安装dns的缓冲
(5)判断crawler_process是否引导加载异常,或者它有出现异常,有的话就设置退出码是1
收藏
0 条评论
下一页