簡介
Scrapy是一個為了爬取網(wǎng)站數(shù)據(jù)液肌,提取結(jié)構(gòu)性數(shù)據(jù)而編寫的應用框架残揉,可以應用在數(shù)據(jù)挖掘,信息處理或存儲歷史數(shù)據(jù)等一系列的程序中昏苏,Scrapy用途廣泛可以用于數(shù)據(jù)挖掘檢測和自動化測試弦叶,Scrapy使用Twisted異步網(wǎng)絡庫來處理網(wǎng)絡通信俊犯。
流程圖
調(diào)度器把request對象交給引擎,引擎負責把request對象交給(中間有個下載中間件)下載器伤哺,下載器發(fā)生請求燕侠,獲取response者祖,下載把response交給引擎,下載器在把response交給(中間有一個爬蟲中間)爬蟲,爬蟲提取數(shù)據(jù)绢彤,然后在將提取到的response七问,交給引擎,引擎將response交給pipeline茫舶。
Scrapy主要組件
Scrapy基本命令
scrapy startproject 項目名稱 #在當前目錄中創(chuàng)建一個項目文件
cd 項目名稱 #進入到項目文件
scrapy genspider 爬蟲名稱 爬蟲鏈接 #創(chuàng)建爬蟲應用
scrapy
scrapy list #展示爬蟲列表
scrapy crawl 爬蟲名 #運行爬蟲
scrapy --nolog #不顯示日志信息可以跟運行爬蟲的時候配合使用
scrapy genspider -t crawl 爬蟲名稱 爬蟲鏈接 #創(chuàng)建c'rawl爬蟲
scrapy --help #可以獲得爬蟲幫助文檔
Debug信息
文件介紹
文件說明
Spider:
自定義spdider類械巡,繼承scrapy.spider,這個主要是用來接收引擎發(fā)過來的response我進行數(shù)據(jù)提取奇适。parse()里面可以寫一些信息提取規(guī)則坟比,詳細見圖。
Iter:
iter用來做數(shù)據(jù)格式化的嚷往,類型為字典葛账,詳情請看圖。
setting:
setting設置爬蟲的請求頭皮仁,cookie籍琳,數(shù)據(jù)庫信息等內(nèi)容。
Pipeline:
pipeline主要進行的是數(shù)據(jù)的持久化贷祈,比如:一些數(shù)據(jù)要保存到數(shù)據(jù)庫趋急,文件或者別的地方都可以在pipeline下面來進行設置保存。
PS:
1.其中它的process_item()方法名是不能更改為別的名稱势誊。
2.如果要使用pipeline需要到setting配置文件中設置呜达,代碼如下:
3.pipeline中權(quán)重越小優(yōu)先級越高
4.pipeline可以設置多個class來進行數(shù)據(jù)的保存
### pipeline setting設置
ITEM_PIPELINE={'myspider.MyspiderPipeline':100} #{pipeline的位置:權(quán)重}
yiled object 與 yiled Request
yiled object:
yiled對象必須返回 Request,Baseitem,dict,None
yiled Request:
能構(gòu)建一個request,同時指定提取數(shù)據(jù)的callback函數(shù),meta
ps:
參數(shù):meta:傳遞信息給下一個函數(shù)
日志的設置
Crawl spider
Crawl spider 總結(jié)