目標(biāo)
1、使用redis+flask維護(hù)動態(tài)代理池
2冲甘、使用redis+flask維護(hù)動態(tài)cookies池
3绩卤、使用scrapy框架,存儲的數(shù)據(jù)存放到mongodb
4江醇、使用scrapy-redis框架【暫不實(shí)現(xiàn)】:分布式的scrapy框架濒憋,提升效率
準(zhǔn)備階段
1、建立項(xiàng)目目錄陶夜,生成虛擬環(huán)境凛驮,在虛擬機(jī)環(huán)境中安裝依賴庫
【注】虛擬機(jī)環(huán)境的問題參考http://www.reibang.com/p/d366f3fb32f0
2、使用scrapy命令生成爬蟲基本框架
查看常用命令
步驟1:創(chuàng)建一個爬蟲項(xiàng)目project
運(yùn)行結(jié)果
步驟2:生成一個spider律适,可以按照步驟1的提示操作【scrapy genspider toutiao toutiao.com】
【注】產(chǎn)生一個spider辐烂,即生成了一個蜘蛛用來爬取頭條
步驟3:運(yùn)行spider,使用命令crawl
步驟4:項(xiàng)目正式開始之前我們來介紹一下項(xiàng)目目錄
toutiao.py腳本很明顯就是產(chǎn)生的蜘蛛spider捂贿,它是用來爬取核心腳本纠修。那么是spider的名字,用來唯一標(biāo)識爬取數(shù)據(jù)的蜘蛛厂僧;allowed_domains指的是允許爬取的域名扣草,URL定義了爬取的目的URL。parse函數(shù)用來解析爬取的結(jié)果,最后要將解析到的數(shù)據(jù)存儲到items.py
items.py腳本定義了爬取的數(shù)據(jù)辰妙,如何理解呢鹰祸。首先解析的數(shù)據(jù)會自動存儲到該腳本中。最后數(shù)據(jù)處理密浑、存儲到數(shù)據(jù)庫蛙婴、或者展示等也需要從該模塊中獲取數(shù)據(jù)
settings.py腳本定義了爬蟲常用的配置項(xiàng),常用的有DEFAULT_REQUEST_HEADERS用來設(shè)置爬蟲時(shí)候的headers信息尔破,SPIDER_MIDDLEWARES用來定義中間件和中間件的優(yōu)先級
middlewares.py腳本定義中間件街图,可以用來處理請求request、響應(yīng)response懒构,以及出現(xiàn)的異常餐济。分別腳本中的3個方法process_request、process_response胆剧、process_exception絮姆。實(shí)際使用中我們需要復(fù)寫這3個方法。用來寫我們業(yè)務(wù)邏輯秩霍。完成之后再配置文件進(jìn)行配置將我們定義的中間件名字寫到配置文件中并設(shè)置優(yōu)先級
pipelines.py腳本即管道腳本篙悯,主要作用是items.py腳本中的數(shù)據(jù)進(jìn)行存儲等,通過管道將數(shù)據(jù)寫入到數(shù)據(jù)庫前域、文件等