scrapy框架 - 基礎概念和流程
阿新 • • 發佈:2018-12-12
目標
- 瞭解學習scrapy的目的
- 能夠說出非同步和非阻塞的區別
- 掌握scrapy的流程
1 為什麼要學習scrapy
通過前面的學習,我們已經能夠解決90%的爬蟲問題了,那麼scrapy是為了解決剩下的10%的問題麼,不是,scrapy框架能夠讓我們的爬蟲效率更高
那麼剩下的10%怎麼辦呢?在課堂上我們學習的是通用的爬蟲技能和爬蟲方法,剩下的10%大家可能以後都不會遇到
2 什麼是scrapy
Scrapy是一個為了爬取網站資料,提取結構性資料而編寫的應用框架,我們只需要實現少量的程式碼,就能夠快速的抓取。
Scrapy 使用了Twisted['twɪstɪd]非同步
文件地址:http://scrapy-chs.readthedocs.io/zh_CN/1.0/intro/overview.html
3 非同步和同步的區別
前面我們說Twisted是一個非同步的網路框架,經常我們也聽到一個詞語叫做非阻塞,那麼他們有什麼區別呢?
- 非同步:呼叫在發出之後,這個呼叫就直接返回,不管有無結果
- 非阻塞:關注的是程式在等待呼叫結果(訊息,返回值)時的狀態,指在不能立刻得到結果之前,該呼叫不會阻塞當前執行緒。
4 scrapy的工作流程
4.1 回顧之前的爬蟲流程
4.2 上面的流程可以改寫為
4.3 scrapy的流程
其流程可以描述如下:
- 排程器把requests-->引擎-->下載中介軟體--->下載器
- 下載器傳送請求,獲取響應---->下載中介軟體---->引擎--->爬蟲中介軟體--->爬蟲
- 爬蟲提取url地址,組裝成request物件---->爬蟲中介軟體--->引擎--->排程器
- 爬蟲提取資料--->引擎--->管道
- 管道進行資料的處理和儲存
注意:
- 圖中綠色線條的表示資料的傳遞
- 注意圖中中介軟體的位置,決定了其作用
- 注意其中引擎的位置,所有的模組之前相互獨立,只和引擎進行互動