久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

python - 通過(guò)正則提取出來(lái)的ip,怎么命名

瀏覽:189日期:2022-07-02 11:07:53

問(wèn)題描述

source_ip = line.split(’- -’)[0].strip() if re.match(’[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}’,source_ip):if source_ip_dict.get(source_ip,’-’)==’-’: source_ip_dict[source_ip]=1else: source_ip_dict[source_ip]=source_ip_dict[source_ip]+1

通過(guò)以上的代碼把a(bǔ)pache的日志ip提取出來(lái),并且進(jìn)行統(tǒng)計(jì)去重了,提取的ip數(shù)據(jù)如下:python - 通過(guò)正則提取出來(lái)的ip,怎么命名

那么要怎么將這些ip地址進(jìn)行命名分類(lèi),如202.108.11.103跟220.181.32.137為百度蜘蛛ip想要實(shí)現(xiàn)的效果如下這兩個(gè)ip命名為百度蜘蛛,然后把他們的統(tǒng)計(jì)數(shù)據(jù)相加即4336+3411百度蜘蛛 7747

這個(gè)要怎么操作

問(wèn)題解答

回答1:

from itertools import groupbyNAME_IP_MAPPING = { ’202.108.11.103’:’百度蜘蛛’, ’220.181.32.137’: ’百度蜘蛛’,}spiders = [ {’ip’:’202.108.11.103’,’count’:123}, {’ip’:’220.181.32.137’,’count’:345}]# 先用ip通過(guò)映射得到名字,再根據(jù)名字將spiders里的item分組,之后各自求和存入新的dict中。{k: sum(s[’count’] for s in g) for k, g in groupby(spiders, lambda s:NAME_IP_MAPPING.get(s[’ip’]))}# output: {’百度蜘蛛’: 468}回答2:

可以嘗試構(gòu)建一個(gè)大型的以字典為鍵, 爬蟲(chóng)名字為值的字典;

ip_map = { ’202.108.11.103’: ’baidu-spider’, ’220’.181.32.137: ’baidu-spider’, ’192.168.1.1’: ’other’ ....}sum = {}for ip in source_ip: print ip sum[ip_mapping.get(ip, ’other’)] = sum.get(ip, 0) + source_ip[ip]print sum回答3:

使用pandas的數(shù)據(jù)透視表

python - 通過(guò)正則提取出來(lái)的ip,怎么命名

回答4:

這樣多累?。槭裁床唤o這個(gè)ip分組單獨(dú)建立一張表, 名為IPGroup (id, ip, groupname)

idipgroupName1202.108.11.103百度蜘蛛2220.181.32.137百度蜘蛛

之后一個(gè)SQL就搞定了,多么輕松(設(shè)樓主用的表明為IPStastics)

SELECT b.groupName, SUM(a.count)FROM IPStastics a INNER JOIN IPGroup b ON a.ip = b.ipGROUP BY b.groupName

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 十堰市| 安吉县| 武宁县| 凤台县| 南澳县| 通河县| 民勤县| 德钦县| 绥滨县| 高雄县| 东至县| 伊春市| 平乐县| 灵石县| 姜堰市| 南开区| 临高县| 长岭县| 綦江县| 兴文县| 宣恩县| 广安市| 灵宝市| 灵璧县| 磴口县| 昭通市| 石门县| 汉川市| 西乌| 安义县| 德格县| 兰州市| 古田县| 本溪市| 睢宁县| 寻甸| 双桥区| 鄯善县| 靖江市| 荣成市| 普兰县|