爬蟲框架
*爬蟲框架是實現爬蟲功能的一個軟件結構和功能組件集合
*爬蟲框架是一個半成品,能夠幫助用戶實現專業網絡爬蟲
Scrapy爬蟲框架結構
"5+2"結構
Spiders(用戶提供Url、以及解析內容)、Item pipelines(對提取的信息進行處理)模塊需要用戶編寫(配置)
其他模塊:Engine、Scheduler、Downloader模塊已有實現,不需要用戶進行修改
Engine:控制所有模塊之間的數據流、根據條件觸發事件,不需要用戶修改
Downloader:根據請求下載網頁,不需要用戶修改
Scheduler:對所有爬取請求進行調度管理、不需要用戶進行修改
Downloader Middleware(中間件)
目的:實施Engine、Scheduler和Downloader之間進行用戶可配置的控制
功能:修改、丟棄、新增請求或響應
用戶可以編寫配置代碼
Spider:解析Downloader返回的響應(Response)、產生爬取項(scraped item)、產生額外的爬取請求(Request)
Item pipelines:以流水線方式處理Spider產生的爬取項、由一組操作順序組成,類似流水線,每個操作是一個Item Pipeline類型。
可能的操作包括:清理、檢驗和查重爬取項中的HTML數據、將數據存儲到數據庫。
Spider Middleware(中間件)
目的:對請求和爬取項的再處理
功能:修改、丟棄、新增請求或爬取項
用戶可以編寫配置代碼
requests vs.Scrapy
requests | Scrapy |
頁面級爬蟲 | 網站級爬蟲 |
功能庫 | 框架 |
並發性考慮不足,性能較差 | 並發性好,性能較高 |
重點在於頁面下載 | 重點在於爬蟲結構 |
定制靈活 | 一般定制靈活,深度定制困難 |
上手十分簡單 | 入門稍難 |
兩個方法看情況用
非常小的需求,用requests庫
不太小的需求,Scrapy框架(持續周期性不間斷爬取)
定制程度很高的需求(不考慮規模),自搭框架,requests>Scrapy
相同點
*兩者都可以進行頁面請求和爬取,python爬蟲的兩個重要技術路線。
*兩者可用性都好,文檔豐富,入門簡單。
*兩者都沒有處理js、提交表單、應對驗證碼等功能(可擴展)。