用python2.7解析Apache日志

2024-05-13 20:10:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从githuburl读取日志文件,使用IP作为查找键添加一些地理信息,然后将一些日志信息和地理信息写入文件。我已经从日志中读取和写入文件,但我不确定使用什么库从IP地址查找坐标等,也不知道如何真正执行这一部分。我找到了regex模块,当我开始理解它时,我发现它已经被弃用了。这是我所能得到的,任何帮助都会很好。在

import urllib2 
apacheLog = 'https://raw.githubusercontent.com/myAccessLog.log'

data = urllib2.urlopen(apacheLog)
for line in data:
    with open('C:\LogCopy.txt','a') as f:
        f.write(line)

Tags: 模块文件httpsimportip信息dataraw
2条回答
  1. re module不是不推荐使用的,它是标准库的一部分。编辑:2.7模块的here's the link
  2. 您的for循环在每次迭代时打开和关闭文件。可能没什么大不了的,但对于大文件来说,打开一次文件并写入需要写入的内容可能会更快。只需交换forwith行的位置。在

所以

data = urllib2.urlopen(apacheLog)
for line in data:
    with open('C:\LogCopy.txt','a') as f: # probably need a double backslash
        f.write(line)

变成

^{pr2}$
  1. Similar question regarding geolocation Python library

祝你好运!在

编辑:在阅读Piotr Kempa的答案后添加了data.splitlines()呼叫

第一部分很简单。只要使用for line in data.split('\n')假设这些行以一个正常的换行符结束(它们应该)。在

然后使用re模块(importre)-我希望它在python2.7中仍在使用。。。您可以使用re.search(r"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}", line)之类的方法提取IP地址,查找搜索()函数了解如何使用它。在

至于在地理位置上定位IP,已经有人问过我,试试这个问题:What python libraries can tell me approximate location and time zone given an IP address?

相关问题 更多 >