2013-09-03 1 views
0

Я хочу извлечь бот-имя с его версией из строк пользовательского агента. Я попытался использовать функцию split. Но так как способ отображения строки пользовательского агента отличается от одного искателя другому, что является лучшим способом получить мой ожидаемый результат? (Пожалуйста, подумайте, что мне нужно общее решение)Извлечь имя бота из user-agent string-Python

Ввод (строки пользовательского агента)

Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html) 
Mozilla/5.0 (compatible; AhrefsBot/4.0; +http://ahrefs.com/robot/) 
msnbot/2.0b (+http://search.msn.com/msnbot.htm) 

Ожидаемый выход

Googlebot/2.1 
AhrefsBot/4.0 
msnbot/2.0b 
+0

использовать regex вместо – DhruvPathak

+0

Посмотрите: http://stackoverflow.com/questions/927552/parsing-http-user-agent-string – alecxe

ответ

2

Попробуйте следующее:

import re 

lines = [ 
    'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)', 
    'Mozilla/5.0 (compatible; AhrefsBot/4.0; +http://ahrefs.com/robot/)', 
    'msnbot/2.0b (+http://search.msn.com/msnbot.htm)' 
] 

botname = re.compile('\w+bot/[.\w]+', flags=re.IGNORECASE) 
for line in lines: 
    matched = botname.search(line) 
    if matched: 
     print(matched.group()) 

печатает

Googlebot/2.1 
AhrefsBot/4.0 
msnbot/2.0b 

предполагается, что имена агентов бот содержат bot/.

+0

Спасибо falsetru! ... :) Это то, чего я ожидал! –

Смежные вопросы