python爬蟲筆記 day6

2021-09-01 23:33:14 字數 1302 閱讀 2221

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練習

db.tv1.aggregate(

},}},

}},} )

logging 模組的使用

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...