Scrapy框架架構圖(圖片來自網絡)
簡要概括:
把整個Scrapy框架比喻成一個古代部隊。
1.引擎:指揮官,部隊的所有動向均需要向指揮官彙報,指揮官負責協調各個單位、部門的運作;
2.調度器:可以看成隊列,給同一單位的士兵編號,決定衝鋒順序;
3.下載器:部隊前鋒;
4.爬蟲:部隊主力;
5.管道工廠:後勤,收拾戰場;
思路:
1.爬取數據分爲三個階段,第一個階段是獲取到每一區塊總體數據量
2.爬取數據量較大,必須支持斷點續爬。對每個待爬取的數據打上標識,標識分爲(0:待爬取;2:重複數據;7:進入隊列;8:已爬取;9:已入庫)
需要解決的問題:
1.此項目爬蟲基本是通過POST方法獲取AJAX異步請求的JSON數據,因此需要改寫默認START_REQUESTS方法;
2.請求量較大,必須使用IP代理池,而且IP代理池是需求自動維護更新的;
3.某些字段值太長,甚至超過4000,注意,不建議使用LONG類型,因爲LONG類型意味着此字段你幾乎不能在數據庫中操作;
4.併發可控;
5.加入隊列或者爬取到數據後需要更改數據庫中狀態,爲避免多線程交叉改變數據狀態,必須攜帶唯一值(FID);