命令行

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入口點註冊命令       注意:該功能尚處於試驗階段,會不穩定

相關文章
相關標籤/搜索