Scrapy命令行工具

来源:互联网 发布:打车软件大公司 编辑:程序博客网 时间:2024/06/16 01:50

Scrapy命令行工具

Scrapy是通过 scrapy 命令行工具进行控制的。 这里我们称之为 “Scrapy tool” 以用来和子命令进行区分。 对于子命令,我们称为 “command” 或者 “Scrapy commands”。

startproject

语法:scrapy startproject <project_name>

project_name 文件夹下创建一个名为 project_name 的Scrapy项目。

例子:

$ scrapy startproject dirbot0

genspider

语法: scrapy genspider [-t template] <name> <domain>

在当前项目中创建spider。

这仅仅是创建spider的一种快捷方法。该方法可以使用提前定义好的模板来生成spider。您也可以自己创建spider的源码文件。

例子:

$ scrapy genspider -lAvailable templates:  basic  crawl  csvfeed  xmlfeed$ scrapy genspider -d basicimport scrapyclass $classname(scrapy.Spider):    name = "$name"    allowed_domains = ["$domain"]    start_urls = (        'http://www.$domain/',        )    def parse(self, response):        pass$ scrapy genspider -t basic example example.comCreated spider 'example' using template 'basic' in module:  dirbot0.spiders.example

以basic的形式建立example.py的爬虫,url是example.com

crawl

语法: scrapy crawl <spider>

例子:

2017-09-03 12:56:20 [scrapy.utils.log] INFO: Scrapy 1.3.3 started (bot: dirbot0)2017-09-03 12:56:20 [scrapy.utils.log] INFO: Overridden settings: {'NEWSPIDER_MODULE': 'dirbot0.spiders', 'SPIDER_MODULES': ['dirbot0.spiders'], 'ROBOTSTXT_OBEY': True, 'BOT_NAME': 'dirbot0'}2017-09-03 12:56:20 [scrapy.middleware] INFO: Enabled extensions:['scrapy.extensions.logstats.LogStats', 'scrapy.extensions.telnet.TelnetConsole', 'scrapy.extensions.corestats.CoreStats']2017-09-03 12:56:21 [scrapy.middleware] INFO: Enabled downloader middlewares:['scrapy.downloadermiddlewares.robotstxt.RobotsTxtMiddleware', 'scrapy.downloadermiddlewares.httpauth.HttpAuthMiddleware', 'scrapy.downloadermiddlewares.downloadtimeout.DownloadTimeoutMiddleware', 'scrapy.downloadermiddlewares.defaultheaders.DefaultHeadersMiddleware', 'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware', 'scrapy.downloadermiddlewares.retry.RetryMiddleware', 'scrapy.downloadermiddlewares.redirect.MetaRefreshMiddleware', 'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware', 'scrapy.downloadermiddlewares.redirect.RedirectMiddleware', 'scrapy.downloadermiddlewares.cookies.CookiesMiddleware', 'scrapy.downloadermiddlewares.stats.DownloaderStats']2017-09-03 12:56:21 [scrapy.middleware] INFO: Enabled spider middlewares:['scrapy.spidermiddlewares.httperror.HttpErrorMiddleware', 'scrapy.spidermiddlewares.offsite.OffsiteMiddleware', 'scrapy.spidermiddlewares.referer.RefererMiddleware', 'scrapy.spidermiddlewares.urllength.UrlLengthMiddleware', 'scrapy.spidermiddlewares.depth.DepthMiddleware']2017-09-03 12:56:21 [scrapy.middleware] INFO: Enabled item pipelines:[]2017-09-03 12:56:21 [scrapy.core.engine] INFO: Spider opened2017-09-03 12:56:21 [scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min)2017-09-03 12:56:21 [scrapy.extensions.telnet] DEBUG: Telnet console listening on 127.0.0.1:60232017-09-03 12:56:22 [scrapy.core.engine] DEBUG: Crawled (404) <GET http://example.com/robots.txt> (referer: None)2017-09-03 12:56:22 [scrapy.core.engine] DEBUG: Crawled (200) <GET http://example.com/> (referer: None)2017-09-03 12:56:22 [scrapy.core.engine] INFO: Closing spider (finished)2017-09-03 12:56:22 [scrapy.statscollectors] INFO: Dumping Scrapy stats:{'downloader/request_bytes': 428, 'downloader/request_count': 2, 'downloader/request_method_count/GET': 2, 'downloader/response_bytes': 1852, 'downloader/response_count': 2, 'downloader/response_status_count/200': 1, 'downloader/response_status_count/404': 1, 'finish_reason': 'finished', 'finish_time': datetime.datetime(2017, 9, 3, 4, 56, 22, 478000), 'log_count/DEBUG': 3, 'log_count/INFO': 7, 'response_received_count': 2, 'scheduler/dequeued': 1, 'scheduler/dequeued/memory': 1, 'scheduler/enqueued': 1, 'scheduler/enqueued/memory': 1, 'start_time': datetime.datetime(2017, 9, 3, 4, 56, 21, 586000)}2017-09-03 12:56:22 [scrapy.core.engine] INFO: Spider closed (finished)

check

语法: scrapy check [-l] <spider>

运行contract检查。

例子:

$ scrapy check -l
$ scrapy check----------------------------------------------------------------------Ran 0 contracts in 0.000sOK

list

语法: scrapy list

列出当前项目中所有可用的spider。每行输出一个spider。

例子:

$ scrapy listexample

fetch

语法: scrapy fetch <url>

不需要项目

使用Scrapy下载器(downloader)下载给定的URL,并将获取到的内容送到标准输出。

该命令以spider下载页面的方式获取页面。例如,如果spider有 USER_AGENT 属性修改了 User Agent,该命令将会使用该属性。

因此,您可以使用该命令来查看spider如何获取某个特定页面。

该命令如果非项目中运行则会使用默认Scrapy downloader设定。

$ scrapy fetch --nolog http://www.example.com/some/page.html[ ... html content here ... ]$ scrapy fetch --nolog --headers http://www.example.com/{'Accept-Ranges': ['bytes'], 'Age': ['1263   '], 'Connection': ['close     '], 'Content-Length': ['596'], 'Content-Type': ['text/html; charset=UTF-8'], 'Date': ['Wed, 18 Aug 2010 23:59:46 GMT'], 'Etag': ['"573c1-254-48c9c87349680"'], 'Last-Modified': ['Fri, 30 Jul 2010 15:30:18 GMT'], 'Server': ['Apache/2.2.3 (CentOS)']}

view

语法: scrapy view <url>

不需要项目

在浏览器中打开给定的URL,并以Scrapy spider获取到的形式展现。 有些时候spider获取到的页面和普通用户看到的并不相同。 因此该命令可以用来检查spider所获取到的页面,并确认这是您所期望的。

parse

语法: scrapy parse <url> [options]

需要项目,获取给定的URL并使用相应的spider分析处理。如果您提供 –callback 选项,则使用spider的该方法处理,否则使用 parse 。

支持的选项[Options]:

  • --spider=SPIDER: 跳过自动检测spider并强制使用特定的spider
  • --a NAME=VALUE: 设置spider的参数(可能被重复)
  • --callback or -c: spider中用于解析返回(response)的回调函数
  • --pipelines: 在pipeline中处理item
  • --rules or -r: 使用 CrawlSpider 规则来发现用来解析返回(response)的回调函数
  • --noitems: 不显示爬取到的item
  • --nolinks: 不显示提取到的链接
  • --nocolour: 避免使用pygments对输出着色
  • --depth or -d: 指定跟进链接请求的层次数(默认: 1)
  • --verbose or -v: 显示每个请求的详细信息

例子:

$ scrapy parse http://www.example.com/ -c parse_item[ ... scrapy log lines crawling example.com spider ... ]>>> STATUS DEPTH LEVEL 1 <<<# Scraped Items  ------------------------------------------------------------[{'name': u'Example item', 'category': u'Furniture', 'length': u'12 cm'}]# Requests  -----------------------------------------------------------------[]

settings

语法: scrapy settings [options]

不需要项目,获取Scrapy的设定,在项目中运行时,该命令将会输出项目的设定值,否则输出Scrapy默认设定。

例子:

$ scrapy settings --get BOT_NAMEscrapybot$ scrapy settings --get DOWNLOAD_DELAY0

runspider

语法: scrapy runspider <spider_file.py>

不需要项目

在未创建项目的情况下,运行一个编写在Python文件中的spider。

$ scrapy runspider myspider.py[ ... spider starts crawling ... ]

version

语法: scrapy version [-v]

输出Scrapy版本。配合 -v 运行时,该命令同时输出Python, Twisted以及平台的信息,方便bug提交。

原创粉丝点击