点击此处浏览总目录

命令行

scrapy支持命令行模式,它提供了一套命令集,每个命令都有不同的参数和可选项

关于配置的设定
  Scrapy会在scrapy.cfg文件查找配置参数,该文件位于scrapy project的根目录下
  配置参数有不同的有效范围
    system-wide
    user-wide
    project-wide

  优先级
    project-wide > user-wide > system-wide

 

环境变量
  可以通过设置环境变量的方式,来控制scrapy使用哪些设置
  相关环境变量如下:
     SCRAPY_SETTINGS_MODULE
     SCRAPY_PROJECT
     SCRAPY_PYTHON_SHELL

 

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 settings

 

project间共享根目录
  一个project的根目录,可能会共享给多个project,而每个project会有自己的settings
  因此需要定义别名

  [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的命令行上执行

 

project创建
  scrapy startproject myproject [project_dir]
  如果不指定project_dir,则默认使用的是myproject的目录
  创建project后,进入project目录(cd project_dir),就可以操控project了

 

project控制
  要想操控project,必须要进入到project文件夹下
  在project内和project外运行命令,返回的结果可能会有很大的不同
  有些属性如user_agent,进入project根目录下执行时,project内部的user_agent会覆盖global的user_agent

 

内置命令集
  帮助命令
    scrapy <command> -h  可查看所有命令的帮助文档
    scrapy -h 查看所有命令

  命令分类
    Project-specific commands:必须进入到project目录内执行

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

posted @ 2019-06-18 16:36  立业的博客  阅读(...)  评论(... 编辑 收藏