爬蟲數據庫一些簡單的設計邏輯

場景:爬取某商城的部分商品。

隊列設計

這裏至少需要爬取2種資源,一種是商品列表,一種是商品信息。
所以要設計1條隊列,保存商品信息URL。

爬蟲1定期爬前N個列表頁 URL,把裏面的商品信息URL爬下來,保存到隊列裏。

爬蟲2定期從隊列中抽出商品信息URL,爬取商品信息,爬完後把該URL移出隊列。

所以呢,簡單來說,只要有2張表就行了,一張保存隊列信息,一張保存商品信息。

何時停止問題

爲了避免每次都把所有商品爬一遍,就要在適當的時候停止。
爬列表頁的時候,一般是設定只爬前 N 頁。
爬商品信息URL的時候,一般是先檢查這個商品是否存在,不存在就入隊,存在的話,就表示接下來都是舊數據了,可以停止了。

當然有種情況,就是有些舊的商品,會被人爲地置頂,或者排到前面來。

這時候就要設置一個值 M,每次最多爬前 M 個,多了不爬。

數據更新問題:

有新商品進來,直接插入即可,如果是舊商品,那要不要更新數據庫裏的內容呢?
一般來說是可以更新的,但有種情況例外,就是你的數據庫會有人去編輯的情況。

如果你的數據庫有專人編輯,那麼最好不要更新舊商品,因爲會覆蓋掉編輯的內容。並且,數據表要採用軟刪除的方式,避免前面的人剛刪除了數據,你的爬蟲又把數據寫進去了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章