1. 程式人生 > 其它 >scrapy命令列與shell

scrapy命令列與shell

scrapy命令列介紹

scrapy提供了2種類型的命令,一種必須在scrapy專案種執行,稱為專案命令;另一種則不需要在Scrapy專案中執行,稱為全域性命令。

全域性命令有7個

startproject:建立專案
settings:設定資訊
runspider:執行爬蟲
shell:開啟Shell除錯
fetch:下載網頁資訊
view:使用瀏覽器開啟指定網址
version:檢視版本號

專案命令有7個:

crawl:執行指定爬蟲
check:檢查爬蟲程式碼
list:列出所有爬蟲
edit:使用預設的編輯器編輯爬蟲檔案
parse:使用爬蟲抓取指定的URL
genspider:建立爬蟲
bench:快速的效能測試

檢視命令如何使用,在命令列輸入

scrapy view -h即可

建立scrapy爬蟲的流程

1.使用startproject建立專案
scrapy startproject <project_name>[project_dir]
如果沒有指定url則建立的目錄會與專案同名
2.使用genspider建立爬蟲
該命令需要進入project_name目錄執行

scrapy genspider [-t template]<name> <domain>

-t可以指定爬蟲的模板,name為爬蟲名稱,domain用於生成allowed_domains和start_urls Spider屬性值。

爬蟲的模板有如下4個

basic
crawl
csvfeed
xmlfeed

basic為基本爬蟲模板,crawl模板生成繼承CrawlSpider爬蟲類的Spider,csvfeed、xmlfeed分別生成繼承CSVFeedSpider與XMLFeedSpider爬蟲類的Spider。
例如建立爬蟲,最後一項是域名,沒寫www是應為這是伺服器名,http://是協議

scrapy genspider -t crawl test baidu.com

啟動爬蟲

scrapy crawl <spidername>

使用list檢視爬蟲
scrapy list
使用fetch獲取資料
scrapy fetch [option] <url>


使用runspider執行爬蟲
scrqpy runspider [option] spider.py
該命令可以在未建立專案時直接執行Spider爬蟲檔案,他比較有用的引數是--output=FILE或者-o FILE,將抓取結果儲存到FILE中


通過view使用瀏覽器開啟URL
scrapy view <url> [option]
你回去會看書麼,你在幹什麼
把這本書借回去之後,今天你能看完麼,或者說所謂的抄完

這是14號晚上8點左右寫的,原指望著回去可以看會書,但沒看,很悲催。
15號一天也沒看書,直接玩去了,晒了被子,在房間裡過了一天,基本上都是看電視打遊戲。
很悲催。
這是16號,我8.40起床,由於之前的操勞,我的起床時間漸漸往後推,所以我需要慢慢的鍛鍊下,把我的起床時間往前推。

Scrapy Shell命令列

是一個互動終端,可以在未啟動Spider的情況下除錯程式碼。其本意是用來測試提取資料的程式碼,不過也可以將其作為正常的python終端,在上面執行測試任何Python程式碼。
該終端是用來測試XPath和CSS表示式,測試其能否從抓取的網頁中正確的提取資料。因此,無須啟動爬蟲,我們可以編寫程式碼邊測試,無需每次修改程式碼之後測試整個爬蟲來檢視抓取結果。

Shell的啟動命令為:

scrapy shell <url>
url為帶爬取的地址。當然,Shell也可以開啟本地檔案。
讀取當前目錄下的檔案需要加上路徑./,相對路徑使用../跳轉到其他目錄

Scrapy的特殊命令:

shelp():打印出所有可使用的屬性與命令
fetch(url[,redict=True]):從給定的URL獲取一個新的Response,同時更新所有相關的專案資料。當指定redirect=False時,不會獲取重定向的資料。
fetch(request):根據給定的Request獲取一個新的Response,同時更新所有相關的專案資料。
view(reponse):使用指定的Response開啟瀏覽器,方便檢查抓取資料。當使用這條命令的時候,為使外部的影象或者表格等正確顯示,會自動為Response中新增一個<base>標籤,指定基準URL,也就是Response對應的URL

使用Scrapy Shell下載頁面時,會自動生成一些物件,分別說明如下:

crawler:當前使用的crawel
spider:處理當前頁面使用的spider,當沒有指定spider時,則是一個Spider物件。
request:獲取更新頁面所對應的Request
response:獲取更新頁面所對應的Response
settings:當前的Scrapy配置命令

使用scrapy shell 時會有大量的日誌,可以使用 --nolog不列印日誌

努力拼搏吧,不要害怕,不要去規劃,不要迷茫。但你一定要在路上一直的走下去,儘管可能停滯不前,但也要走。