在每一次學習一個新東西之前,需要知道的幾個問題。這個東西是什么(what),怎么使用(how),為什么(why)
scrapy的概念:Scrapy是一個為了爬取網站數據,提取結構性數據而編寫的框架。
scrapy的作用:通過少量代碼實現快速抓取。
scrapy一共有5個模塊和2個中間件,模塊分別是Spider爬蟲模塊,engine引擎模塊,scheduler調度器模塊,Downloader下載器模塊,Pipeline管道模塊。中間件分別是Downloader--Middlewares(下載器中間件),
Spider-Middlewares(爬蟲中間件)。
engine引擎模塊:負責數據和信號在不同模塊間的傳遞。
scheduler調度器模塊:實現一個隊列,存放引擎發過來的request請求對象。
Downloader下載器模塊:發送引擎發過來的request請求,獲取響應,并將response傳遞給引擎。
Spider爬蟲模塊:處理引擎發過來的response,提取數據,提取url,并交給引擎。
Pipeline管道模塊:處理引擎傳遞過來的數據,比如存儲。格式可以是csv、json、mongodb、redis、mysql.
下載中間件(downloader middleware):可以自定義的下載擴展,比如設置代理Ip。
爬蟲中間件(spider middleware):可以自定義request請求和進行response過濾。
?
scrapy的工作原理流程:
1.spider---request---engine
2.engine---request---scheduler
3.scheduler---request---engine
4.engine---request---downloader
5.downloader---response---engine
6.engine---response---spider
7.spider---new_url---engine
重復1-6
8.spider---data---engine
9.engine---data---pipeline
?
scrapy框架的運行流程以及數據傳遞過程:
- 調度器把requests-->引擎-->下載中間件--->下載器
- 下載器發送請求,獲取響應---->下載中間件---->引擎--->爬蟲中間件--->爬蟲
- 爬蟲提取url地址,組裝成request對象---->爬蟲中間件--->引擎--->調度器
- 爬蟲提取數據--->引擎--->管道
- 管道進行數據的處理和保存
?