scrapy命令行工具

通过这篇文章,我们会了解scrapy的命令行工具。

文章介绍命令行工具的顺序基本就是按照官方文档的顺序来。

命令

scrapy的命令分为全局命令和项目内命令。全局命令也就是不需要在项目所在目录下运行,项目内命令必须在生成项目后,在此目录下运行的命令。举个栗子,startproject就是全局命令,因为在运行这个命令的时候还没有项目,check就是项目内命令,因为必须有项目才能检查代码正确与否。

Global commands:

  • startproject
  • genspider
  • settings
  • runspider
  • shell
  • fetch
  • view
  • version

Project-only commands:

  • crawl
  • check
  • list
  • edit
  • parse
  • bench

创建项目

命令:

scrapy startproject testproject

这个命令用于生成我们所需要的爬虫项目。进入到该目录中,会发现生成了许多文件。这些文件的用法在以后都会一一详解。

生成spider

命令:

scrapy genspider baidu www.baidu.com

输入该命令会在spiders文件夹下生成一个名为 baidu.py 的文件,cat这个文件,我们会发现其实就是最基本的spider模板。

模板选择

在终端输入命令可以查看生成模板的类型:

scrapy genspider -l

输出:

Available templates:
  basic
  crawl
  csvfeed
  xmlfeed

也就是系统自带这四种模板,如果没有指定模板,会选择basic基本模板。如果你问我可以自定义模板吗,当然可以了,不过本文暂时不涉及这个问题,如果有需要可以先自行google。

使用模板命令:

scrapy genspider -t xmlfeed zhihu www.zhihu.com

-t就是TEMPLATE,也就是模板。

例子:

$ scrapy genspider -l
Available templates:
  basic
  crawl
  csvfeed
  xmlfeed

$ scrapy genspider example example.com
Created spider 'example' using template 'basic'

$ scrapy genspider -t crawl scrapyorg scrapy.org
Created spider 'scrapyorg' using template 'crawl'

crawl

用于运行指定spider

命令:

scrapy crawl baidu

check

check用来检查项目中的代码是否有错误。如果没错会返回ok,如果有错会定位错误代码的位置。

命令:

scrapy check

示例:

➜  testproject scrapy check

----------------------------------------------------------------------
Ran 0 contracts in 0.000s

OK

list

运行命令会列出项目中所有的spider。

命令:

scrapy list

示例,在我们创建的项目目录下运行:

➜  testproject scrapy list
baidu
zhihu

shell

运行这个命令会进入命令行交互模式,以给定的 URL(如果给出)或者空(没有给出 URL)启动 Scrapy shell。查看 Scrapy 终端(Scrapy shell)可以做一些简单的操作,可以使用选择器快速获取信息,方便调试。

fetch

使用这个命令会执行一次请求,并调用scrapy的下载器,返回网页的源码。

命令:

scrapy fetch http://www.baidu.com

还可以加三个参数:

--nolog
--headers
--no-redirect

分别是不输出日志信息,返回网页的请求头和禁止重定向。如果网页没有重定向的话返回的还是原网页。

view

命令:

scrapy view http://www.taobao.com

这个命令比较有用,它的作用是请求网址,输出网址的源码,并将该网页保存成一个文件,使用浏览器打开。如果打开的网址和你正常加载的网页有所不同,一般情况下没显示的部分使用了异步加载。因此该命令可以用来检查 spider 所获取到的页面,并确认这是您所期望的。

这样在你以后的抓取过程中就可以使用这个命令分析网页是否使用了异步加载。

runspider

这个命令和crawl命令的区别在于crawl命令后是spider的name,而runspider命令后加的是爬虫的文件名,在本文的项目中,使用crawl命令:

scrapy crawl baidu

使用runspider就是:

scrapy runspider baidu.py

settings

用来获取项目的配置信息。

例如获取项目名称:

➜  testproject scrapy settings --get BOT_NAME
testproject

edit

如果你不使用vim作为编辑器的话,这个命令不常用,因为这个命令会调用vim来编辑文件。

命令:

scrapy edit baidu

如果你想学习这个编辑器的话,这有三篇入门文章可以供你参考:

1.vim快捷用法
2.对vim的简单配置
3.安装YouCompleteMe插件-Python版

parse

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

使用上一篇的例子:

scrapy parse http://quotes.toscrape.com -c parse

支持的操作:

--spider = SPIDER:
bypass spider autodetection and force use of specific spider
跳过自动检测 spider 并强制使用特定的 spider

--a NAME = VALUE:
set spider argument (may be repeated)
设置 spider 的参数(可能被重复)

--callback or -c:
spider method to use as callback for parsing the response
spider 中用于解析返回(response)的回调函数

--pipelines:
process items through pipelines
在 pipeline 中处理 item

--rules or -r:
use CrawlSpider rules to discover the callback (i.e. spider method) to use for parsing the response
使用 CrawlSpider 规则来发现用来解析返回(response)的回调函数

--noitems:
don’t show scraped items
不显示爬取到的 item

--nolinks:
don’t show extracted links
不显示提取到的链接

--nocolour:
avoid using pygments to colorize the output
避免使用 pygments 对输出着色

--depth or -d:
depth level for which the requests should be followed recursively (default: 1)
指定跟进链接请求的层次数(默认:1)

--verbose or -v:
display information for each depth level
显示每个请求的详细信息

bench

这个命令会运行 benchmark 测试,模拟测试scrapy的爬取速度。

version

这个命令可以查询当前scrapy的版本,和一些依赖库版本信息。

示例:

➜  ~ scrapy version
Scrapy 1.3.3

➜  ~ scrapy version -v
Scrapy    : 1.3.3
lxml      : 3.7.3.0
libxml2   : 2.9.3
cssselect : 1.0.1
parsel    : 1.1.0
w3lib     : 1.17.0
Twisted   : 17.1.0
Python    : 3.5.2 (default, Nov 17 2016, 17:05:23) - [GCC 5.4.0 20160609]
pyOpenSSL : 17.0.0 (OpenSSL 1.0.2g  1 Mar 2016)
Platform  : Linux-4.4.0-81-generic-x86_64-with-Ubuntu-16.04-xenial
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,298评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,701评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 107,078评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,687评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,018评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,410评论 1 211
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,729评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,412评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,124评论 1 239
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,379评论 2 242
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,903评论 1 257
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,268评论 2 251
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,894评论 3 233
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,014评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,770评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,435评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,312评论 2 260

推荐阅读更多精彩内容