場景:爬取某商城的部分商品。數據庫
這裏至少須要爬取2種資源,一種是商品列表,一種是商品信息。
因此要設計1條隊列,保存商品信息URL。設計
爬蟲1按期爬前N個列表頁 URL,把裏面的商品信息URL爬下來,保存到隊列裏。隊列
爬蟲2按期從隊列中抽出商品信息URL,爬取商品信息,爬完後把該URL移出隊列。資源
因此呢,簡單來講,只要有2張表就好了,一張保存隊列信息,一張保存商品信息。數據
爲了不每次都把全部商品爬一遍,就要在適當的時候中止。
爬列表頁的時候,通常是設定只爬前 N 頁。
爬商品信息URL的時候,通常是先檢查這個商品是否存在,不存在就入隊,存在的話,就表示接下來都是舊數據了,能夠中止了。商城
固然有種狀況,就是有些舊的商品,會被人爲地置頂,或者排到前面來。
這時候就要設置一個值 M,每次最多爬前 M 個,多了不爬。
有新商品進來,直接插入便可,若是是舊商品,那要不要更新數據庫裏的內容呢?
通常來講是能夠更新的,但有種狀況例外,就是你的數據庫會有人去編輯的狀況。
若是你的數據庫有專人編輯,那麼最好不要更新舊商品,由於會覆蓋掉編輯的內容。而且,數據表要採用軟刪除的方式,避免前面的人剛刪除了數據,你的爬蟲又把數據寫進去了。