scrapy命令行工具

通過這篇文章,我們會了解scrapy的命令行工具。

文章介紹命令行工具的順序基本就是按照官方文檔的順序來。

命令

scrapy的命令分為全局命令和項目內命令。全局命令也就是不需要在項目所在目錄下運行,項目內命令必須在生成項目后,在此目錄下運行的命令。舉個栗子,startproject就是全局命令,因為在運行這個命令的時候還沒有項目,check就是項目內命令,因為必須有項目才能檢查代碼正確與否。

Global commands:

  • startproject
  • genspider
  • settings
  • runspider
  • shell
  • fetch
  • view
  • version

Project-only commands:

  • crawl
  • check
  • list
  • edit
  • parse
  • bench

創(chuàng)建項目

命令:

scrapy startproject testproject

這個命令用于生成我們所需要的爬蟲項目。進入到該目錄中,會發(fā)現(xiàn)生成了許多文件。這些文件的用法在以后都會一一詳解。

生成spider

命令:

scrapy genspider baidu www.baidu.com

輸入該命令會在spiders文件夾下生成一個名為 baidu.py 的文件,cat這個文件,我們會發(fā)現(xiàn)其實就是最基本的spider模板。

模板選擇

在終端輸入命令可以查看生成模板的類型:

scrapy genspider -l

輸出:

Available templates:
  basic
  crawl
  csvfeed
  xmlfeed

也就是系統(tǒng)自帶這四種模板,如果沒有指定模板,會選擇basic基本模板。如果你問我可以自定義模板嗎,當然可以了,不過本文暫時不涉及這個問題,如果有需要可以先自行google。

使用模板命令:

scrapy genspider -t xmlfeed zhihu www.zhihu.com

-t就是TEMPLATE,也就是模板。

例子:

$ scrapy genspider -l
Available templates:
  basic
  crawl
  csvfeed
  xmlfeed

$ scrapy genspider example example.com
Created spider 'example' using template 'basic'

$ scrapy genspider -t crawl scrapyorg scrapy.org
Created spider 'scrapyorg' using template 'crawl'

crawl

用于運行指定spider

命令:

scrapy crawl baidu

check

check用來檢查項目中的代碼是否有錯誤。如果沒錯會返回ok,如果有錯會定位錯誤代碼的位置。

命令:

scrapy check

示例:

?  testproject scrapy check

----------------------------------------------------------------------
Ran 0 contracts in 0.000s

OK

list

運行命令會列出項目中所有的spider。

命令:

scrapy list

示例,在我們創(chuàng)建的項目目錄下運行:

?  testproject scrapy list
baidu
zhihu

shell

運行這個命令會進入命令行交互模式,以給定的 URL(如果給出)或者空(沒有給出 URL)啟動 Scrapy shell。查看 Scrapy 終端(Scrapy shell)可以做一些簡單的操作,可以使用選擇器快速獲取信息,方便調試。

fetch

使用這個命令會執(zhí)行一次請求,并調用scrapy的下載器,返回網頁的源碼。

命令:

scrapy fetch http://www.baidu.com

還可以加三個參數(shù):

--nolog
--headers
--no-redirect

分別是不輸出日志信息,返回網頁的請求頭和禁止重定向。如果網頁沒有重定向的話返回的還是原網頁。

view

命令:

scrapy view http://www.taobao.com

這個命令比較有用,它的作用是請求網址,輸出網址的源碼,并將該網頁保存成一個文件,使用瀏覽器打開。如果打開的網址和你正常加載的網頁有所不同,一般情況下沒顯示的部分使用了異步加載。因此該命令可以用來檢查 spider 所獲取到的頁面,并確認這是您所期望的。

這樣在你以后的抓取過程中就可以使用這個命令分析網頁是否使用了異步加載。

runspider

這個命令和crawl命令的區(qū)別在于crawl命令后是spider的name,而runspider命令后加的是爬蟲的文件名,在本文的項目中,使用crawl命令:

scrapy crawl baidu

使用runspider就是:

scrapy runspider baidu.py

settings

用來獲取項目的配置信息。

例如獲取項目名稱:

?  testproject scrapy settings --get BOT_NAME
testproject

edit

如果你不使用vim作為編輯器的話,這個命令不常用,因為這個命令會調用vim來編輯文件。

命令:

scrapy edit baidu

如果你想學習這個編輯器的話,這有三篇入門文章可以供你參考:

1.vim快捷用法
2.對vim的簡單配置
3.安裝YouCompleteMe插件-Python版

parse

獲取給定的 URL 并使用相應的 spider 分析處理。如果您提供 --callback 選項,則使用 spider 的該方法處理,否則使用 parse

使用上一篇的例子:

scrapy parse http://quotes.toscrape.com -c parse

支持的操作:

--spider = SPIDER:
bypass spider autodetection and force use of specific spider
跳過自動檢測 spider 并強制使用特定的 spider

--a NAME = VALUE:
set spider argument (may be repeated)
設置 spider 的參數(shù)(可能被重復)

--callback or -c:
spider method to use as callback for parsing the response
spider 中用于解析返回(response)的回調函數(shù)

--pipelines:
process items through pipelines
在 pipeline 中處理 item

--rules or -r:
use CrawlSpider rules to discover the callback (i.e. spider method) to use for parsing the response
使用 CrawlSpider 規(guī)則來發(fā)現(xiàn)用來解析返回(response)的回調函數(shù)

--noitems:
don’t show scraped items
不顯示爬取到的 item

--nolinks:
don’t show extracted links
不顯示提取到的鏈接

--nocolour:
avoid using pygments to colorize the output
避免使用 pygments 對輸出著色

--depth or -d:
depth level for which the requests should be followed recursively (default: 1)
指定跟進鏈接請求的層次數(shù)(默認:1)

--verbose or -v:
display information for each depth level
顯示每個請求的詳細信息

bench

這個命令會運行 benchmark 測試,模擬測試scrapy的爬取速度。

version

這個命令可以查詢當前scrapy的版本,和一些依賴庫版本信息。

示例:

?  ~ scrapy version
Scrapy 1.3.3

?  ~ scrapy version -v
Scrapy    : 1.3.3
lxml      : 3.7.3.0
libxml2   : 2.9.3
cssselect : 1.0.1
parsel    : 1.1.0
w3lib     : 1.17.0
Twisted   : 17.1.0
Python    : 3.5.2 (default, Nov 17 2016, 17:05:23) - [GCC 5.4.0 20160609]
pyOpenSSL : 17.0.0 (OpenSSL 1.0.2g  1 Mar 2016)
Platform  : Linux-4.4.0-81-generic-x86_64-with-Ubuntu-16.04-xenial
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容