从源码开始学习Scrapy系列10-runspider指令

版权声明:本文为博主原创文章,支持转载,但希望你加上转载地址,原创不易,且转且珍惜。 https://blog.csdn.net/wang1472jian1110/article/details/80394820

前言

runspider命令用于直接通过输入文件来运行爬虫,即可不创建项目

代码调试

进入runspider模块的run方法

输入参数校验

if len(args) != 1:
    raise UsageError()
filename = args[0]
if not os.path.exists(filename):    # 文件存在判定
    raise UsageError("File not found: %s\n" % filename)

导入爬虫文件模块

try:
    module = _import_file(filename)     
except (ImportError, ValueError) as e:
    raise UsageError("Unable to load %r: %s\n" % (filename, e))

获取当前模块的所有爬虫类

spclasses = list(iter_spider_classes(module))
if not spclasses:
    raise UsageError("No spider found in file: %s\n" % filename)

默认输出最后一个爬虫对象

spidercls = spclasses.pop()

爬虫调度运行

self.crawler_process.crawl(spidercls, **opts.spargs)
self.crawler_process.start()


github地址

https://github.com/wangrenlei/debug_scrapy



结束

展开阅读全文

没有更多推荐了,返回首页