mongodb mysql redis的區別和使用場景
mysql是關係型資料庫,支援事物
mongodb,redis非關係型資料庫,不支援事物
mysql,mongodb,redis的使用根據如何方便進行選擇
希望速度快的時候,選擇mongodb或者是redis
資料量過大的時候,選擇頻繁使用的資料存入redis,其他的存入mongodb
mongodb不用提前建表建資料庫,使用方便,字段數量不確定的時候使用mongodb
後續需要用到資料之間的關係,此時考慮mysql
爬蟲資料去重,實現增量式爬蟲
使用資料庫建立關鍵字段(乙個或者多個)建立索引進行去重
根據url位址進行去重
使用場景:
url位址對應的資料不會變的情況,url位址能夠唯一判別乙個條資料的情況
思路url存在redis中
拿到url位址,判斷url在redis的url的集合中是夠存在
存在:說明url已經被請求過,不再請求
不存在:url位址沒有被請求過,請求,把該url存入redis的集合中
布隆過濾器
使用多個加密演算法加密url位址,得到多個值
往對應值的位置把結果設定為1
新來乙個url位址,一樣通過加密演算法生成多個值
如果對應位置的值全為1,說明這個url位址已經抓過
否則沒有抓過,就把對應位置的值設定為1
根據資料本省進行去重
選擇特定的字段,使用加密演算法(md5,sha1)講欄位進行假面,生成字串,存入redis的集合中
後續新來一條資料,同樣的方法進行加密,如果得到的字串在redis中存在,說明資料存在,對資料進行更新,否則說明資料不存在,直接插入
page50練習
logging 模組的使用db.tv1.aggregate(
},}},
}},} )
scrapy
settings中設定log_level=「warning」
settings中設定log_file="./a.log" #設定日誌儲存的位置,設定會後終端不會顯示日誌內容
import logging,例項化logger的方式在任何檔案中使用logger輸出內容
普通專案中
import logging
logging.basicconfig(...) #設定日誌輸出的樣式,格式
例項化乙個logger=logging.getlogger(name)
在任何py檔案中呼叫logger即可
python學習筆記 day6
open方法基本使用 open file,mode r encoding none 幾種開啟模式 r 唯讀模式 w 寫模式,如果檔案在,先清空 危險!x 建立模式,如果檔案在,會報錯 a 類似日誌 b 二進位制模式 t 文字模式 r w 個 件物件被open 法建立後,這個物件可 的有下 這些 cl...
Python爬蟲day6 非同步IO(協程)
協程 乙個簡單的協程例子 產生n defcountdown gen n,consumer consumer.send none 預激操作,等同於next consumer while n 0 consumer.send n n 1 try consumer.send none 傳送空值,結束執行緒 ...
Python學習筆記 day6筆記
一 遞迴 遞迴就是函式自己呼叫自己 遞迴時死迴圈次數 最多999次 遞迴也是一種迴圈方法 函式有返回值時必須加return 沒有返回值時可以不加return 迴圈效率比遞迴高 二 內建函式 intlist setdict tuple strfloat input quit exit print ty...