scrapy支持命令行模式,它提供了一套命令集,每一个命令都有不一样的参数和可选项
关于配置的设定
Scrapy会在scrapy.cfg文件查找配置参数,该文件位于scrapy project的根目录下
配置参数有不一样的有效范围
system-wide
user-wide
project-wide
优先级
project-wide > user-wide > system-widehtml
环境变量
能够经过设置环境变量的方式,来控制scrapy使用哪些设置
相关环境变量以下:
SCRAPY_SETTINGS_MODULE
SCRAPY_PROJECT
SCRAPY_PYTHON_SHELLpython
Project目录结构
Scrapy project默认目录结构以下,但能够改变
scrapy.cfg
myproject/
__init__.py
items.py
middlewares.py
pipelines.py
settings.py
spiders/
__init__.py
spider1.py
spider2.py
scrapy.cfg
该文件所在目录称为project根目录,该文件包含了python模块名,这些模块定义了project settingslinux
project间共享根目录
一个project的根目录,可能会共享给多个project,而每一个project会有本身的settings
所以须要定义别名shell
[settings] default = myproject1.settings #表示默认状况下使用哪一个project project1 = myproject1.settings project2 = myproject2.settings
默认状况下,scrapy command-line tool会使用default settings
可经过修改环境变量SCRAPY_PROJECT来更改使用哪一个project浏览器
scrapy settings #输出:Project 1 Bot,get BOT_NAME export SCRAPY_PROJECT=project2 scrapy settings #get BOT_NAME --输出:Project 2 Bot,get BOT_NAME
Scrapy Tool使用
Scrapy Tool是一款软件,相似于linux的vi,经过命令行使用
使用scrapy tool会返回一些项目信息及一些可用的命令
若是使用的是anaconda,须要在anaconda的命令行上执行dom
project建立
scrapy startproject myproject [project_dir]
若是不指定project_dir,则默认使用的是myproject的目录
建立project后,进入project目录(cd project_dir),就能够操控project了scrapy
project控制
要想操控project,必需要进入到project文件夹下
在project内和project外运行命令,返回的结果可能会有很大的不一样
有些属性如user_agent,进入project根目录下执行时,project内部的user_agent会覆盖global的user_agent编辑器
内置命令集
帮助命令
scrapy <command> -h 可查看全部命令的帮助文档
scrapy -h 查看全部命令
命令分类
Project-specific commands:必须进入到project目录内执行ide
Global commands:不须要必定进入到project目录内执行
project外的setting会被project内的setting覆盖,所以project目录内执行命令会有不一样结果
性能
startproject
语法:scrapy startproject <project_name> [project_dir]
require project:no
在project_dir下建立project,若是不指定project_dir,则默认在当前目录下建立project
genspider
语法:scrapy genspider [-t template] <name> <domain>,require project:no
在当前文件夹下建立一个新的spider
若是在当前project目录下,则在当前project的spiders文件夹下建立一个新的spider
name用于指定新建spider的name
domain用于生成spider的属性allowed_domains和start_urls
建立spider不必定要用这种命令行的方式,直接建立文件并手写代码或拷贝其余spider并修改更方便
crawl
语法:scrapy crawl <spider>
require project:yes
进入project根目录,执行该命令,使用spider爬取数据
check
语法:scrapy check [-l] <spider>
require project:yes
进入project根目录,执行该命令,检查spider内部是否有错误
使用例:
scrapy check #检查project内全部的spider
scrapy check <spider_name> #检查某指定spider
list
语法:scrapy list
require project:yes
进入project根目录,执行该命令,列出当前project下全部的spider
edit
语法:scrapy edit <spider>,require project:yes
使用EDITOR环境变量或EDITOR Setting指定的编辑器修改spider
该方法仅用于方便时进行操做,也可使用IDE或记事本直接编辑
fetch
语法:scrapy fetch <url>
require project:no
使用Scrapy downloader从给定的URL下载网页源码,并将其写入标准输出
spider下载网页源码与该命令下载的是同样的
若是spider定义了USER_AGENT属性,该属性会覆盖User Agent,下载是会使用定义的USER_AGENT属性
所以,若是想查看spider下载某个网页具体是什么样的,可使用该命令,而无需debug
若是是在project外执行该命令,它会使用默认的Scrapy downloader settings
支持的参数
--spider=SPIDER: 强制使用某个指定spider
--headers: 打印response的http header,而不是response body
--no-redirect: 不遵循HTTP 3xx重定向(默认是遵循)
--nolog:不打印log
使用例:
scrapy fetch --nolog http://www.example.com/some/page.html
scrapy fetch --nolog --headers http://www.example.com/
view
语法:scrapy view <url>
require project:no
在浏览器打开指定的URL
使用例:
scrapy view --nolog http://www.example.com/some/page.html
shell
语法:scrapy shell [url]
require project:no
为给定的URL启动Scrapy shell,相似ipython,若是没有URL,则为空
也支持类unix的本地文件路径,包括绝对路径和相对路径
支持的参数
--spider=SPIDER:强制使用某个指定spider
-c code:评估shell中的code,打印结果并退出
--no-redirect: 不遵循HTTP 3xx重定向(默认是遵循)
该参数只影响在命令行做为参数传递的URL
一旦进入shell,默认状况下,fetch(url)仍将遵循HTTP重定向
parse
语法:scrapy parse <url> [options],require project:yes
使用给定的URL,并使用spider对结果进行解析
解析方法是经过--callback选项指定的,若是不指定callback方法,则默认使用parse()方法
settings
语法:scrapy settings [options],require project:no
获取setting的值
若是是在project内,返回project setting值,若是在project外,则返回默认的Scrapy setting值
scrapy settings --get BOT_NAME #输出:scrapybot
scrapy settings --get DOWNLOAD_DELAY #输出:0
runspider
语法:scrapy runspider <spider_file.py>
require project:no
运行一个包含在python文件中的spider,而没必要建立一个项目
version
语法:scrapy version [-v]
require project:no
打印scrapy版本
若是与-v一块儿使用,还打印python、twisted和平台信息,这对于bug报告颇有用
bench
语法:scrapy bench
require project:no
运行一个快速基准测试,测试电脑当前爬取速度性能
自定义project命令
COMMANDS_MODULE
能够经过使用COMMANDS_MODULE来自定义并查看自定义project命令
Default: '' (empty string)
COMMANDS_MODULE = 'mybot.commands'
注册命令 经过setup.py入口点注册命令 注意:该功能尚处于试验阶段,会不稳定