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