E:\Python 3.6.2\Lib\site-packages\scrapy\templates\project
,~/.config/scrapy.cfg
($XDG_CONFIG_HOME
) 及 ~/.scrapy.cfg
($HOME
) 做全局設置scrapy.cfg
.優先權:項目定義>用戶層面>系統層面css
Scrapy也會讀取並經過環境變量來設置. 目前支持的有:html
SCRAPY_SETTINGS_MODULE
SCRAPY_PROJECT
SCRAPY_PYTHON_SHELL
scrapy.cfg 文件是在項目的根目錄,其中包括項目名稱與項目設置。python
[settings] default = [name of the project].settings [deploy] #url = http://localhost:6800/ project = [name of the project]
在爬蟲項目外運行scrapy:shell
C:\Users\Administrator>scrapy Scrapy 1.5.0 - no active project Usage: scrapy <command> [options] [args] Available commands: bench Run quick benchmark test fetch Fetch a URL using the Scrapy downloader genspider Generate new spider using pre-defined templates runspider Run a self-contained spider (without creating a project) settings Get settings values shell Interactive scraping console startproject Create new project version Print Scrapy version view Open URL in browser, as seen by Scrapy [ more ] More commands available when run from project directory Use "scrapy <command> -h" to see more info about a command
在項目文件內運行scrapy:windows
F:\PycharmProjects\tutorial>scrapy Scrapy 1.5.0 - project: tutorial Usage: scrapy <command> [options] [args] Available commands: bench Run quick benchmark test check Check spider contracts crawl Run a spider edit Edit spider fetch Fetch a URL using the Scrapy downloader genspider Generate new spider using pre-defined templates list List available spiders parse Parse URL (using its spider) and print the results runspider Run a self-contained spider (without creating a project) settings Get settings values shell Interactive scraping console startproject Create new project version Print Scrapy version view Open URL in browser, as seen by Scrapy Use "scrapy <command> -h" to see more info about a command
scrapy startproject myproject
該命令將會在 myproject
目錄中建立一個Scrapy項目。api
接下來,進入到項目目錄中:瀏覽器
cd myproject
建立一個新的spider:app
scrapy genspider mydomain mydomain.com
有些Scrapy命令(好比 crawl)要求必須在Scrapy項目中運行。dom
有些命令在項目裏運行時的效果有些許區別,以fetch命令爲例,若是被爬取的url與某個特定spider相關聯, 則該命令將會使用spider的動做(spider-overridden behaviours) (好比spider指定的 user_agent)。通常來講, fetch 命令就是用來測試檢查spider是如何下載頁面。scrapy
經過運行命令來獲取關於每一個命令的詳細內容:
scrapy <command> -h
您也能夠查看全部可用的命令:
scrapy -h
Scrapy提供了兩種類型的命令。
全局命令:
runspider: 它用於而無需建立一個項目運行自行包含蜘蛛(spider)。
settings: 它規定了項目的設定值。
shell: 這是一個給定URL的一個交互式模塊。
startproject: 它建立了一個新的 Scrapy 項目。
version: 它顯示Scrapy版本。
view: 它使用Scrapy downloader 提取 URL並顯示在瀏覽器中的內容。
項目命令:
check: 它檢查項目並由 crawl 命令返回;
list: 它顯示本項目中可用蜘蛛(spider)的列表;
edit: 能夠經過編輯器編輯蜘蛛;
parse:它經過蜘蛛分析給定的URL;
bench: 它是用來快速運行基準測試(基準講述每分鐘可被Scrapy抓取的頁面數量)。
自定義命令:
startproject
在 project_name 文件夾下建立一個名爲 project_name 的Scrapy項目。
例子:
$ scrapy startproject myproject
genspider
scrapy genspider [-t template] <name> <domain>
在當前項目中建立spider。
這僅僅是建立spider的一種快捷方法。該方法可使用提早定義好的模板來生成spider。您也能夠本身建立spider的源碼文件。
例子:
$ scrapy genspider -l # 查看爬蟲模板列表 Available templates: basic crawl csvfeed xmlfeed $ scrapy genspider -d basic # 查看爬蟲basic的文本內容 import scrapy class $classname(scrapy.Spider): name = "$name" allowed_domains = ["$domain"] start_urls = ( 'http://www.$domain/', ) def parse(self, response): pass $ scrapy genspider -t basic example example.com # 以basic爲模板建立example,加上--force參數表示覆蓋 Created spider 'example' using template 'basic' in module: mybot.spiders.example
crawl
scrapy crawl <spider>
使用spider進行爬取。
例子:
$ scrapy crawl myspider [ ... myspider starts crawling ... ]
check
scrapy check [-l] <spider>
運行contract檢查,檢查爬蟲是否合規。
例子:
當某個爬蟲文件出現錯誤時,會報錯,包括語法錯誤。爬蟲時經過name惟一標識。
def parse(self, response): # 語法不完整
F:\PycharmProjects\tutorial>scrapy check example Traceback (most recent call last): File "e:\python 3.6.2\lib\runpy.py", line 193, in _run_module_as_main "__main__", mod_spec) File "e:\python 3.6.2\lib\runpy.py", line 85, in _run_code exec(code, run_globals) ··········································································
list
scrapy list
列出當前項目中全部可用的spider。每行輸出一個spider。
例子:
$ scrapy list spider1 spider2
edit
scrapy edit <spider>
使用 EDITOR
中設定的編輯器編輯給定的spider
該命令僅僅是提供一個快捷方式。開發者能夠自由選擇其餘工具或者IDE來編寫調試spider。
例子:
$ scrapy edit spider1 # windows下彷佛無效
fetch
scrapy fetch <url>
使用Scrapy下載器(downloader)下載給定的URL,並將獲取到的內容送到標準輸出。
該命令以spider下載頁面的方式獲取頁面。例如,若是spider有 USER_AGENT
屬性修改了 User Agent,該命令將會使用該屬性。
所以,您可使用該命令來查看spider如何獲取某個特定頁面。
該命令若是非項目中運行則會使用默認Scrapy downloader設定。
支持的選項:
--spider = SPIDER
:繞過 spider 自動檢測,強制使用特定的spider--headers
:打印響應的 HTTP 頭,而不是響應的正文- -no-redirect
:不遵循 HTTP 3xx 重定向(默認是遵循它們)F:\PycharmProjects\tutorial>scrapy fetch --nolog http://www.example.com/some/page.html <!doctype html> <html> ················································· </head> <body> ················································· </body> </html> F:\PycharmProjects\tutorial>scrapy fetch --nolog --headers http://www.example.com/ > Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 > Accept-Language: en > User-Agent: Scrapy/1.5.0 (+https://scrapy.org) > Accept-Encoding: gzip,deflate > < Cache-Control: max-age=604800 < Content-Type: text/html < Date: Mon, 11 Jun 2018 06:05:55 GMT < Etag: "1541025663+gzip" < Expires: Mon, 18 Jun 2018 06:05:55 GMT < Last-Modified: Fri, 09 Aug 2013 23:54:35 GMT < Server: ECS (dca/249E) < Vary: Accept-Encoding < X-Cache: HIT
view
scrapy view <url>
在瀏覽器中打開給定的URL,並以Scrapy spider獲取到的形式展示。 有些時候spider獲取到的頁面和普通用戶看到的並不相同。 所以該命令能夠用來檢查spider所獲取到的頁面,並確認這是您所指望的。
例子:
$ scrapy view http://www.example.com/some/page.html [ ... 開啓瀏覽器 ... ]
shell
scrapy shell [url]
以給定的URL(若是給出)或者空(沒有給出URL)啓動Scrapy shell。 查看 Scrapy終端(Scrapy shell) 獲取更多信息。
支持的選項:
--spider = SPIDER
:繞過 spider 自動檢測,強制使用特定的spider
-c code
:評估 shell 中的代碼,打印結果並退出
--no-redirect
:不遵循 HTTP 3xx 重定向(默認是遵循它們);這隻影響您能夠在命令行上做爲參數傳遞的 URL ;一旦你在shell中,默認狀況下 fetch(url)
仍然會遵循HTTP重定向。例子:
$ scrapy shell http://www.example.com/some/page.html [ ... scrapy shell starts ... ]
parse
scrapy parse <url> [options]
獲取給定的URL並使用相應的spider分析處理。若是您提供 --callback
or -c
選項,則使用spider的該方法處理,不然使用 parse
。
支持的選項:
--spider=SPIDER
: 跳過自動檢測spider並強制使用特定的spider--a NAME=VALUE
: 設置spider的參數(可能被重複)--callback
or -c
: spider中用於解析返回(response)的回調函數--pipelines
: 在pipeline中處理item--rules
or -r
: 使用 CrawlSpider
規則來發現用來解析返回(response)的回調函數--noitems
: 不顯示爬取到的item--nolinks
: 不顯示提取到的連接--nocolour
: 避免使用pygments對輸出着色--depth
or -d
: 指定跟進連接請求的層次數(默認: 1)--verbose
or -v
: 顯示每一個請求的詳細信息例子:
F:\PycharmProjects\tutorial>scrapy parse http://www.example.com/ -c parse_item 2018-06-11 14:29:41 [scrapy.utils.log] INFO: Scrapy 1.5.0 started (bot: tutorial) 2018-06-11 14:29:41 [scrapy.utils.log] INFO: Versions: lxml 4.1.1.0, libxml2 2.9.5, cssselect 1.0.1, parsel 1.2.0, w3lib 1.18.0, Twisted 17.9.0, Python 3.6.2 (v3.6.2:5fd33b5, Jul 8 2017, 04:14:34) [MSC v.1900 32 bit (Intel)], pyOpenSSL 17.3.0 (OpenSSL 1.1.0g 2 Nov 2017), cryptography 2.1.3, Platform Windows-10-10.0.15063-SP0 ······················································································ >>> STATUS DEPTH LEVEL 0 <<< # Scraped Items ------------------------------------------------------------ [] # Requests ----------------------------------------------------------------- []
settings
scrapy settings [options]
獲取Scrapy的設定
在項目中運行時,該命令將會輸出項目的設定值,不然輸出Scrapy默認設定。
例子:
F:\PycharmProjects\tutorial>scrapy settings --get BOT_NAME tutorial F:\PycharmProjects\tutorial>scrapy settings --get DOWNLOAD_DELAY 0
runspider
scrapy runspider <spider_file.py>
在未建立項目的狀況下,運行一個編寫在Python文件中的spider。
例子:
$ scrapy runspider myspider.py [ ... spider starts crawling ... ]
version
scrapy version [-v]
輸出Scrapy版本。配合 -v
運行時,該命令同時輸出Python, Twisted以及平臺的信息,方便bug提交。
bench
0.17 新版功能.
scrapy bench
運行benchmark測試。 Benchmarking 。
您也能夠經過 COMMANDS_MODULE
來添加您本身的項目命令。您能夠以 scrapy/commands 中Scrapy commands爲例來了解如何實現您的命令。
COMMANDS_MODULE
Default: ''
(empty string)
用於查找添加自定義Scrapy命令的模塊。
例子:
COMMANDS_MODULE = 'mybot.commands'