《第23天》python教你用IP库统计维基百科访问日志信息

liftword1周前 (06-23)技术文章2

维基百科大家可能都知道,非常著名的一个百科网站,小编手上有一份维基百科访问日志,数据量不是很大,3万4千多个访问数据信息。这里我就讲讲如何统计出这一份日志中的信息,得到哪个国家访问维基百科最多。剩下的信息有兴趣的朋友可以自己统计。

开班第二十三天:

今天的课程大纲:

  1. 使用淘宝ip库查询统计日志文档

  2. 使用Geolocation IP查询统计日志文档

详细讲解:

  • 使用淘宝ip库查询统计日志文档

先给大家看看日志文件的内容结构,可以看到以第一个空白分割的第一部分就是我们所需要的ip地址,那么我们就想方设法得到ip然后查询到ip对应的内容就行了。

这里我通过awk把ip内容统计出来放到ip.txt这个文件中,得到ip的方法如下:

cat wiki-access.log | awk '{print $1}' | sort | uniq >ip.txt,得到的ip.txt内容如下:

得到ip之后,我们就先了解一下淘宝的ip库,打开网站:http://ip.taobao.com/,看看淘宝给出的查询接口,我们可以直接使用请求接口来实现我们ip地址的查询,返回的结果是一个json数据,然后就可以获得我们想要的country数据了。

主要的实现代码如下,这里我先把所有的国家信息存放到vlaue.txt文件中,等下我接着对这个文件进行分析就可以了,这里有一个限制,由于淘宝给出的接口每秒只允许查询10次,所以查询数据量较大的ip可能耗费的时间较长,所以我等下也会讲第二种方法。

这里是我统计出来的vlaue.txt文件,里面的内容主要是ip对应的国家。

现在我们需要做的就是分析这个文件,这里我使用shell脚本重新分析了一下,这里还是利用了awk和文件读取的特性,最后我们得到了结果存放那个在readme.txt文件中,我们看一下内容。




这样就实现了我们的需求。

  • 使用Geolocation IP查询统计日志文档

上面的查询很大的一个缺陷就是查询速度慢,查询数量有限制,所以我们可以利用现有的ip库来进行查询,这样是一个离线的查询,速度相对会快很多,而且不会有查询数量的限制。

下面是我下载好的ip库,数据库文件,打开是乱码的,可以看看。

接着我们就用这个ip库进行查询,这里呢,我们就要学习一个模块,pygeoip,这个模块已经封装好了方法,我们只需要调用就行了,如何封装的呢,我这里有一个pygeoip.py脚本,大家可以从官网上下载,也可以从我的群里获取。

这里我就直接使用了,大概的方法和解释我都已经注释出来了。这里讲一下注释的第二条,这是跟觉不同的日志文件来写的,这样也就是说你可以用我的脚本来实现对你或者你们公司的日志文件进行分析,只需要提取出ip地址就行。

运行脚本,得到数据内容,这里对应的都是英文国家简称,在pygeoip.py中定义了这些国家的简称,可以去分析一下。

总结:

维基百科日志文件微信回复维基百科就可以得到,GeoIP.dat回复GeoIP,pygeoip.py回复pygeoip。

这样我们的需求基本上都实现了,我写脚本秉持的一个原则是,bug肯定是有的,优化是慢慢的事情,不要太过于相信别人的输入,也不要太看不起别人的水平。

头条号:爱家人爱老婆的IT男

QQ群:145252709,我会上传资源,同时会有很多大神跟你们讨论学习分享

微信公众号:程序猿的野生香蕉

相关文章

避免踩坑:教你用Python优雅的获取本机IP方法!(含实际案例)

今天为大家带来的内容是:避免踩坑:教你用Python优雅的获取本机IP方法!(含实际案例)见过很多获取服务器本地IP的代码,个人觉得都不是很好,例如以下这些:不推荐:靠猜测去获取本地IP方法嗨喽:正在...

使用Python获取IP地址等位置信息

我们在编程时,有时需要获取IP地址等位置信息,比如当你想向网站的用户发送登录信息时。在本文中,我们将了解如何使用Python获取IP地址。为了获取IP地址,我们需要使用Python中的requests...

python 如何判断字符串为IP地址

要判断一个字符串是否为IP地址,可以使用Python内置的ipaddress模块。该模块提供了一些类来处理IP地址和网络。使用ipaddress.IPv4Address和ipaddress.IPv6A...

使用 Python 验证 IP 地址

要使用 Python 验证 IP 地址,可以使用 ipaddress 模块的 ip_address() 函数,适用于 IPv4 和 IPv6 地址。还可以使用自定义函数或正则表达式来验证 IP 地址。...

用python实现域名资产监控

应用场景域名资产监控,通过输入一个主域名,找到该域名对应的ip地址所在的服务器的端口开闭情况。通过定期做这样的监控,有助于让自己知道自己的资产的整体暴露面情况。所需要具备的前缀技能python的简单使...

一款功能强大的 IP 查询工具

Fav-upFav-up 是一款功能强大的IP查询工具,该工具可以通过Shodan和Favicon(网站图标)来帮助研究人员查询目标服务或设备的真实IP地址。工具安装首先,该工具需要本地设备安装并部署...