命令行

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入口点注册命令       注意:该功能尚处于试验阶段,会不稳定

相关文章
相关标签/搜索