日志包含我需要提取的数据,包括:IP 地址、日期、时间和 URL。
例如:
66.249.64.76 - - [15/8/2019:04:03:25 +1000]“GET /UADI/sleep/image/watch_l1.gif HTTP/1.1”200 4885“-”“Googlebot-Image/1.0”“ -”
&
66.249.64.76 - - [15/8/2019:04:03:26 +1000]“GET /UADI/sleep/image/DS_Network_EOG.png HTTP/1.1”200 33245“-”“Googlebot-Image/1.0”“ -”
我需要编写一个Python脚本,从日志文件中读取输入并显示有多少主机访问了带有关键字“UADI”的网站
任何帮助将不胜感激!
我希望自己检查数据并创建一个包含所需 4 个元素的列表,或者是否有更好的方法让 python 分析数据本身?
我希望程序请求输入并提供单个输出,然后再次重新请求新的输入
假设您已经拥有 .txt 文件形式的日志,并且知道其位置,则可以使用简单的正则表达式来提取以 ip 开头的“UADI”出现次数:
*编辑:这将计算具有 UADI 的行数。从你的问题中我不清楚你是否需要知道有多少个不同的主机,但你也可以使用正则表达式。
import re
filename = 'temp.txt'
with open(filename, 'r') as f:
lines = f.readlines()
pattern = re.compile(r'\d+\.\d+\.\d+\.\d+.*UADI.*')
count = sum(1 for line in lines if pattern.match(line))
print(f'match count: {count}')```