一.2019/07/22
01.上一阶段总结汇报:
上一阶段完成:①.分析了cnc、maxmind和qqLocList库三个文件的地理名信息,如下:
发现qq的LocList库虽然较为规范,但国家不全,因此可能需要重新找其他标准。
今天计划:①.尝试解决loclist库国家数不全问题,或者另找其他可行标准;②.寻找cnc、maxmind和某标准库的城市名匹配的思路及可行算法,如文本相似度匹配算法等。
02.git版本控制学习:廖雪峰教程:https://www.liaoxuefeng.com/wiki/896043488029600
03.git下载:https://git-scm.com/download/win
04.git官方文档:https://git-scm.com/book/en/v2
05.使用三引号及help()为函数及类写说明文档:https://blog.youkuaiyun.com/weixin_33896069/article/details/89550691
06.git详细教程:https://www.cnblogs.com/smuxiaolei/p/7484678.html
07.excel如何一直显示表头(一直显示第一行)(便于查看、分析数据):选中第一行→视图→冻结窗格:https://jingyan.baidu.com/article/fedf073788db6b35ac89779a.html
08.初步思路:通过geoip2库来对IP进行定位,以填充cnc中的缺失值:https://blog.youkuaiyun.com/hanyuyang19940104/article/details/80922841
09.maxmind geolite2数据库下载:https://dev.maxmind.com/geoip/geoip2/geolite2/
二.2019/07/23
01.问题总结明确:
遇到问题:①.cnc中共有4698514条数据,其中城市名缺失(用qita表示)的有3077235条数据。出现缺失是否是因为<iphead,iptail>覆盖了多个不同城市,所以精度只给到省份?若是,则该部分城市名是否需要补全?
②.cnc和maxmind数据量相差较大。最终目标是通过<IPHEAD,IPTAIL>的IP段来索引city_name,还是通过单个IP地址来索引city_name?③.发现maxmind中之所以有123757个city_name,是因为其中很多都是隶属于标准城市的下一级单位(下辖区等),甚至下下一级单位(乡镇等),如下所示。
而由于标准城市和下一级城市间并无明显语义关系,因此无法通过文本聚类方式将下级城市映射到标准城市,理论上只能通过某些标准库查询获知。且maxmind共有145718条数据,若通过经纬度爬取标准城市名,则耗时过长,不实用。因此以上两种方法不适用,还需继续寻找能将maxmind城市名规范化的方法。
今天计划:继续寻找城市名匹配的方法。
02.全球ip查询网站:http://ipblock.chacuo.net/
03.ip2location官网:https://www.ip2location.com/
04.dbip lite免费下载官网(很好用):https://db-ip.com/db/download/ip-to-city-lite
05.maxmind,ipip.net,dp-ip,ip2location等都是常用的ip地址查询库:https://www.v2ex.com/t/218881
06.免费版:ip2location lite database下载:https://lite.ip2location.com/
07.pandas查询某列的某元素所在行,并找出该行位置的另一列的元素值:
city_name=database.loc[database['<IPHEAD>']==ip,'<CITY>']
08.python区间处理库interval(很强大!,可以直接处理IP段和时间段!):https://www.cnblogs.com/cotyb/p/5256303.html
09.通过interval可以直接生成IP段:
import interval
#生成指定区间内的ip段
ips=interval.IntervalSet.between('39.135.50.128','39.135.50.191')
三.2019/07/24
01.supervisord:Supervisor( http://supervisord.org )是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统。它可以很方便的监听、启动、停止、重启一个或多个进程。用Supervisor管理的进程,当一个进程意外被杀死,supervisort监听到进程死后,会自动将它重新拉起,很方便的做到进程自动恢复的功能,不再需要自己写shell脚本来控制。(要先安装meld3,再安装supervisor)
02.linux结束进程命令:kill PID(进程编号)
03.linux,退出vim编辑器指令:ESC+:+q https://www.cnblogs.com/crazylqy/p/5649860.html
04.vim编辑器的打开与退出:vim url/xx.conf https://zhidao.baidu.com/question/510884035.html
05.python代码规范:pep8
06.python IP地址处理模块:IPy:https://www.cnblogs.com/kaixiang/p/7131187.html
07.可变长子网掩码(vlsm):https://blog.youkuaiyun.com/forest_fire/article/details/71703075
斜杠用来分隔IP地址与子网掩码位数,网络地址代表一个网络段,IP地址与子网掩码是逻辑与运算得到网络地址。
08.pandas高级操作:判断某列特征中的某行元素,在作用了某个函数之后,其输出若满足要求,则输出该行另一列特征的值:
city_name = database.loc[database['network'].apply(lambda x:ip in IP(x)) == True, 'city_name_new']
09.pandas同时处理两列数据:https://www.jb51.net/article/138580.htm
df = pd.DataFrame ({'a' : np.random.randn(6),
'b' : ['foo', 'bar'] * 3,
'c' : np.random.randn(6)})
def my_test(a, b):
return a + b
df['Value'] = df.apply(lambda row: my_test(row['a'], row['c']), axis=1)
print df
10.IPy模块使用过程中遇到的bug:无法从0开始:https://blog.youkuaiyun.com/qq_326324545/article/details/88904116
四.2019/07/25
01.IP子网掩码含义:子网掩码与IP地址是组合使用的,IP地址我们都知道是计算机在网络内的唯一标识,而子网掩码顾名思义是用于划分子网的:https://baijiahao.baidu.com/s?id=1606474671793061553&wfr=spider&for=pc
02.pandas:使用df.fillna填充缺失值时,要使用df.fillna(-1,inplace=True)才能改变源数据】: