摘要:思路拿到的文本是二進(jìn)制的,在查看文件的時(shí)候可以加上以二進(jìn)制讀的形式打開。獲取數(shù)據(jù)庫獲取表插入到數(shù)據(jù)庫
思路
拿到的文本是二進(jìn)制的,在查看文件的時(shí)候可以加上-rb以二進(jìn)制讀的形式打開。
文件格式如下:
b’2019-03-29 10:55:00 0192.168.31.123:8080 5 12345678 0 44560 953864 2 192.168.31.123 md5 ’
可以看到日志里面的分隔符是制表符t,行末尾有換行符n
處理日志文件的基本邏輯
鏈接數(shù)據(jù)庫
逐行讀txt
將一行的數(shù)據(jù)分割為數(shù)組
將數(shù)據(jù)放入list
將list逐條轉(zhuǎn)化為json
存入數(shù)據(jù)庫
分片集群的mongo鏈接用于存儲日志的mongo集群有三個(gè)分片:flux-stat-1.mongo:27017,flux-stat-2.mongo:27017和flux-stat-3.mongo:27017.
假設(shè)用戶名是flux-stat,密碼是flux-stat-mongo123,登錄方法:
from pymongo import MongoClient import urllib.parse #創(chuàng)建MongoDB鏈接對象 username = urllib.parse.quote_plus(‘flux-stat’) password = urllib.parse.quote_plus(‘flux-stat-mongo123’) uri = "mongodb://%s:%s@flux-stat-1.mongo:27017, flux-stat-2.mongo:27017, flux-stat-3.mongo:27017/admin" % (username,password) client = MongoClient(uri)
注意:username和password必須要進(jìn)行轉(zhuǎn)換,否則鏈接不正確
pymongo逐行讀取日志文本with open(“d:/user/ServerLog/test.txt”,’rb’) as file: for line in file: #這里放操作 file.close()分割日志內(nèi)容轉(zhuǎn)化為json,并把每行json放到數(shù)組中
#引入json模塊 import json total=[] logList = line.split(‘ ’) #line分割為list keyList = [‘time’,’status’,’ip’,’type’,’userid’,’v1’,’v2’,’v3’,’v4’,’ip’,’md5’] #key的list logDict = dict(zip(keyList, logList)) #把二者以字典的方式拼起來 logJson = json.dumps(logDict) #把字典轉(zhuǎn)換為string形式的json #json轉(zhuǎn)字典的方法為dictinfo = json.loads(json_str) total.append(logJson)日志存入mongo
insert_one和insert_many是兩種插入的方式,但是采用insert_one進(jìn)行逐條插入會進(jìn)行大量的訪問,大幅降低插入效率,采用insert_many進(jìn)行json為基本單位的list批量插入,效率明顯提高。
db = client["log"] #獲取數(shù)據(jù)庫 coll = db[‘data’] #獲取表 coll.insert_many(total) #插入到數(shù)據(jù)庫
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/19515.html
摘要:思路拿到的文本是二進(jìn)制的,在查看文件的時(shí)候可以加上以二進(jìn)制讀的形式打開。獲取數(shù)據(jù)庫獲取表插入到數(shù)據(jù)庫 思路 拿到的文本是二進(jìn)制的,在查看文件的時(shí)候可以加上-rb以二進(jìn)制讀的形式打開。 文件格式如下: b’2019-03-29 10:55:00 0192.168.31.123:8080 5 12345678 0 44560 953864 2 192.168.31.123 md5 ’ ...
摘要:今天閑暇之余寫了一個(gè)爬蟲例子。后兩個(gè)為分頁參數(shù),是每個(gè)商品的,通過這個(gè)去獲取商品的評價(jià)記錄,所以我們只需要知道每個(gè)商品的就輕而易舉的獲取評價(jià)了。大概了解了整個(gè)流程,就可以開始我們的爬蟲工作了。 今天閑暇之余寫了一個(gè)爬蟲例子。通過爬蟲去爬取京東的用戶評價(jià),通過分析爬取的數(shù)據(jù)能得到很多結(jié)果,比如,哪一種顏色的胸罩最受女性歡迎,以及中國女性的平均size(僅供參考哦~) 打開開發(fā)者工具-ne...
摘要:舉個(gè)栗子你有一個(gè)箱子,里面有一個(gè)兒子級別和孫子級別的箱子共層現(xiàn)在你把孫子級別的箱子單獨(dú)拿出來,把整個(gè)箱子替換掉就是這種思想。。。自己體會吧這種語法,好像列表的切片賦值。。官方建議我們用它的好處是把和由兩個(gè)函數(shù)調(diào)用變?yōu)閭€(gè)參數(shù)傳進(jìn)去了。 閱讀須知 由于是對比書寫: M: 代表 Mongo原生語法 P: 代表 PyMongo書寫方法 后面提到:同上 字眼: ...
摘要:爬取百思不得姐首先一步一步來,我們先從爬最簡單的文本開始。將百思不得姐段子保存到中別忘了將管道加到配置文件中。雖然我只是簡單的爬了百思不得姐,不過這些方法可以應(yīng)用到其他方面,爬取更多更有用的數(shù)據(jù)。 前一篇文章介紹了很多關(guān)于scrapy的進(jìn)階知識,不過說歸說,只有在實(shí)際應(yīng)用中才能真正用到這些知識。所以這篇文章就來嘗試?yán)胹crapy爬取各種網(wǎng)站的數(shù)據(jù)。 爬取百思不得姐 首先一步一步來,我...
閱讀 3881·2021-10-08 10:05
閱讀 2968·2021-09-27 13:57
閱讀 2693·2019-08-29 11:32
閱讀 1017·2019-08-28 18:18
閱讀 1312·2019-08-28 18:05
閱讀 1997·2019-08-26 13:39
閱讀 875·2019-08-26 11:37
閱讀 2056·2019-08-26 10:37