Python Scrapy:“runspider”和“crawl”命令有什么区别?

时间:2016-06-03 06:29:56

标签: python-2.7 scrapy

有人可以解释 runspider 抓取命令之间的区别吗?应该使用它们的背景是什么?

3 个答案:

答案 0 :(得分:6)

两者的小解释和语法:

<强> runspider

语法:scrapy runspider <spider_file.py>

需要项目:否

在Python文件中自行运行一个蜘蛛,无需创建项目。

使用示例:

$ scrapy runspider myspider.py

<强>抓取

语法:scrapy crawl <spider>

需要项目:是

使用具有相应名称的蜘蛛开始抓取。

用法示例:

 $ scrapy crawl myspider

答案 1 :(得分:5)

主要区别在于runspider不需要项目。也就是说,您可以在myspider.py文件中编写蜘蛛并调用scrapy runspider myspider.py

crawl命令需要一个项目才能找到项目的设置,从SPIDER_MODULES设置加载可用的蜘蛛,然后按name查找蜘蛛。

如果你需要快速蜘蛛来完成一项短任务,那么runspider需要更少的样板。

答案 2 :(得分:2)

在命令中:

scrapy crawl [options] <spider>

<spider>是项目名称(在settings.py中定义为BOT_NAME)。

在命令中:

scrapy runspider [options] <spider_file>

<spider_file>是包含蜘蛛的文件的路径。

否则,选项是相同的:

Options
=======
--help, -h              show this help message and exit
-a NAME=VALUE           set spider argument (may be repeated)
--output=FILE, -o FILE  dump scraped items into FILE (use - for stdout)
--output-format=FORMAT, -t FORMAT
                        format to use for dumping items with -o

Global Options
--------------
--logfile=FILE          log file. if omitted stderr will be used
--loglevel=LEVEL, -L LEVEL
                        log level (default: DEBUG)
--nolog                 disable logging completely
--profile=FILE          write python cProfile stats to FILE
--lsprof=FILE           write lsprof profiling stats to FILE
--pidfile=FILE          write process ID to FILE
--set=NAME=VALUE, -s NAME=VALUE
                        set/override setting (may be repeated)
--pdb                   enable pdb on failure

由于runspider并不依赖BOT_NAME参数,因此根据您自定义抓取工具的方式,您可能会发现runspider更灵活。