Scrapy中核心组件的创建

沈阳白癜风医院 http://m.39.net/pf/a_5837445.html

execute()-解析命令行参数-加载配置文件-实例化CrawlerProcess-实例化SpiderLoader爬虫加载器-监听shutdown信号-初始化日志-执行run方法-执行crawl方法-初始化Crawler-初始化Spider-更新spider的配置,然后不再更新配置-监听信号-执行Crawler的crawl方法-创建Spider-实例化Engine-实例化Scheduler-初始化指纹过滤器-任务队列目录-优先级任务队列类-磁盘任务队列-内存任务队列-日志是否需要格式化-实例化Downloader-初始化DownloaderHandlers-初始化DOWNLOAD_HANDLERS/DOWNLOAD_HANDLERS_BASE定义的下载处理器-监听关闭的信号-初始化任务并发数、同一域名并发数、同一IP并发数、随机延时下载时间-初始化DownloaderMiddlewareManager-设置slotGC任务-实例化Scraper-实例化SpiderMiddlewareManager-实例化ItemPipelineManager-调用Spider的start_requests方法-调用Engine的open_spider传入start_reqiests迭代器-调用start方法,启动爬虫1.解析命令行参数

在setup.py文件中可以看到scrapy绑定的脚本文件

setup(entry_points={console_scripts:[scrapy=scrapy.cmdline:execute]}}

我们看一下scrapy.cmdline:execute的代码

defexecute(argv=None,settings=None):ifargvisNone:argv=sys.argvifsettingsisNone:#加载配置settings=get_project_settings()#在配置文件中设置EDITOR变量也不知道是干嘛的try:editor=os.environ[EDITOR]exceptKeyError:passelse:settings[EDITOR]=editor#检查是否在scrapy项目目录下inproject=inside_project()#获取所有的命令配置信息{cmd_name:cmd_cls_path}#顺便也加载了用户自定义的命令cmds=_get_



转载请注明地址:http://www.sanbaicaoasb.com/scls/8531.html
  • 上一篇文章:
  • 下一篇文章:
  • 热点文章

    • 没有热点文章

    推荐文章

    • 没有推荐文章