python - 解析机器人 true 机器人列表 ( bot_list )
python - parse a bot true a list of bots ( bot_list )
我们有一个 apache_log 解析器。我们尝试了几个 whay 来解析 bot 真正的机器人列表 ( bot_list )。但没有成功。我们尝试比较两个列表,但机器人来了或者不是列表。
我们想要实现的是机器人首先经过bot_list。这样只有通过的机器人不在 bot_list.
中
log = apache_log(lines)
for r in log:
bot = r['bot']
bot_list = [ "Googlebot/2.1",
"AhrefsBot/5.0",
"bingbot/2.0",
"DotBot/1.1",
"MJ12bot/v1.4.5",
"SearchmetricsBot",
"YandexBot/3.0",
]
它正在以这种方式为一个机器人工作。
bot = r['bot'].strip()
if not bot.startswith("Googlebot/2.1"):
这就是我们的过滤器,bot.startwith。
但是我们怎样才能实现先通过 bot_list?
希望有人能给我们指明正确的方向?
如果我理解您的问题,您可能需要检查 bot_list 中是否没有机器人。我建议从日志文件中获取机器人名称:
bot_name = r["bot"].split(" ")[22]
if bot_name not in bot_list:
让 22 成为 UserAgent 在您的日志文件中的位置,which you might have already customized。
位置不清楚可以用函数:
if not len(filter(lambda x: x in r["bot"], bot_list)):
与
相同
return_list = []
for i in bot_list:
if i in r["bot"]:
return_list.append(i)
return len(return_list)
我们有一个 apache_log 解析器。我们尝试了几个 whay 来解析 bot 真正的机器人列表 ( bot_list )。但没有成功。我们尝试比较两个列表,但机器人来了或者不是列表。
我们想要实现的是机器人首先经过bot_list。这样只有通过的机器人不在 bot_list.
中log = apache_log(lines)
for r in log:
bot = r['bot']
bot_list = [ "Googlebot/2.1",
"AhrefsBot/5.0",
"bingbot/2.0",
"DotBot/1.1",
"MJ12bot/v1.4.5",
"SearchmetricsBot",
"YandexBot/3.0",
]
它正在以这种方式为一个机器人工作。
bot = r['bot'].strip()
if not bot.startswith("Googlebot/2.1"):
这就是我们的过滤器,bot.startwith。 但是我们怎样才能实现先通过 bot_list?
希望有人能给我们指明正确的方向?
如果我理解您的问题,您可能需要检查 bot_list 中是否没有机器人。我建议从日志文件中获取机器人名称:
bot_name = r["bot"].split(" ")[22]
if bot_name not in bot_list:
让 22 成为 UserAgent 在您的日志文件中的位置,which you might have already customized。
位置不清楚可以用函数:
if not len(filter(lambda x: x in r["bot"], bot_list)):
与
相同return_list = []
for i in bot_list:
if i in r["bot"]:
return_list.append(i)
return len(return_list)