Scrapy爬蟲框架
Scrapy是一個(gè)為了爬取網(wǎng)站數(shù)據(jù),提取結(jié)構(gòu)性數(shù)據(jù)而編寫的應(yīng)用框架。 其可以應(yīng)用在數(shù)據(jù)挖掘,信息處理或存儲(chǔ)歷史數(shù)據(jù)等一系列的程序中。其最初是為了頁面抓取 (更確切來說, 網(wǎng)絡(luò)抓取 )所設(shè)計(jì)的, 也可以應(yīng)用在獲取API所返回的數(shù)據(jù)(例如 Amazon Associates Web Services ) 或者通用的網(wǎng)絡(luò)爬蟲。Scrapy用途廣泛,可以用于數(shù)據(jù)挖掘、監(jiān)測和自動(dòng)化測試。
Scrapy 使用了 Twisted異步網(wǎng)絡(luò)庫來處理網(wǎng)絡(luò)通訊。整體架構(gòu)大致如下

圖片.png
Scrapy主要包括了以下組件:
-
引擎(Scrapy)
用來處理整個(gè)系統(tǒng)的數(shù)據(jù)流, 觸發(fā)事務(wù)(框架核心) -
調(diào)度器(Scheduler)
用來接受引擎發(fā)過來的請(qǐng)求, 壓入隊(duì)列中, 并在引擎再次請(qǐng)求的時(shí)候返回. 可以想像成一個(gè)URL(抓取網(wǎng)頁的網(wǎng)址或者說是鏈接)的優(yōu)先隊(duì)列, 由它來決定下一個(gè)要抓取的網(wǎng)址是什么, 同時(shí)去除重復(fù)的網(wǎng)址 -
下載器(Downloader)
用于下載網(wǎng)頁內(nèi)容, 并將網(wǎng)頁內(nèi)容返回給蜘蛛(Scrapy下載器是建立在twisted這個(gè)高效的異步模型上的) -
爬蟲(Spiders)
爬蟲是主要干活的, 用于從特定的網(wǎng)頁中提取自己需要的信息, 即所謂的實(shí)體(Item)。用戶也可以從中提取出鏈接,讓Scrapy繼續(xù)抓取下一個(gè)頁面 -
項(xiàng)目管道(Pipeline)
負(fù)責(zé)處理爬蟲從網(wǎng)頁中抽取的實(shí)體,主要的功能是持久化實(shí)體、驗(yàn)證實(shí)體的有效性、清除不需要的信息。當(dāng)頁面被爬蟲解析后,將被發(fā)送到項(xiàng)目管道,并經(jīng)過幾個(gè)特定的次序處理數(shù)據(jù)。 -
下載器中間件(Downloader Middlewares)
位于Scrapy引擎和下載器之間的框架,主要是處理Scrapy引擎與下載器之間的請(qǐng)求及響應(yīng)。 -
爬蟲中間件(Spider Middlewares)
介于Scrapy引擎和爬蟲之間的框架,主要工作是處理蜘蛛的響應(yīng)輸入和請(qǐng)求輸出。 -
調(diào)度中間件(Scheduler Middewares)
介于Scrapy引擎和調(diào)度之間的中間件,從Scrapy引擎發(fā)送到調(diào)度的請(qǐng)求和響應(yīng)。
Scrapy運(yùn)行流程大概如下:
- 引擎從調(diào)度器中取出一個(gè)鏈接(URL)用于接下來的抓取
- 引擎把URL封裝成一個(gè)請(qǐng)求(Request)傳給下載器
- 下載器把資源下載下來,并封裝成應(yīng)答包(Response)
- 爬蟲解析Response
- 解析出實(shí)體(Item),則交給實(shí)體管道進(jìn)行進(jìn)一步的處理
- 解析出的是鏈接(URL),則把URL交給調(diào)度器等待抓取
安裝
pip install scrapy
創(chuàng)建工程
scrapy startproject 工程XXX
使用tree樹形目錄
pip install tree
第一次安裝沒有效果,則更新一下系統(tǒng)即可
查看樹形目錄,N為目錄深度
tree -L N
進(jìn)入剛創(chuàng)建的項(xiàng)目目錄
tree -L 3

微信圖片_20181214040842.png
使用mongodb存儲(chǔ)數(shù)據(jù)
下載安裝包 www.mongodb.org/downloads

微信圖片_20181215132500.png
curl -O http://downloads.mongodb.org/linux/mongodb-linux-x86_64-4.0.4.tgz
2. 解壓tgz包
tar -zxvf mongodb-linux-x86_64-2.6.3.tgz
3. 拷貝解壓出的文件夾到指定目錄
注意權(quán)限,如果提示沒有權(quán)限,請(qǐng)用sudo,或者修改目錄的own。
mkdir -p mongodb cp -R -n mongodb-linux-x86_64-2.6.3/ mongodb
4. 修改/etc/profile(對(duì)所有用戶有效)或者~/.bashrc(對(duì)當(dāng)前用戶有效), 把mongodb/bin加到PATH中。
export MONGODB=/opt/mongodb
export PATH=$MONGODB/bin:$PATH