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