Извлечь IP-адрес из строки html (python)

Мои друзья,

Я действительно хочу извлечь простой IP-адрес из строки (на самом деле однострочный html), используя Python. Но оказывается, что прошло 2 часа. Я все еще не мог найти хорошего решения.

  • Python regex, удалите все знаки препинания, кроме дефиса для строки unicode
  • Извлечь строку между двойными кавычками
  • Вызывает ли re.compile () или любой вызов библиотеки Python исключение?
  • Поддерживает ли флажок регулярные выражения в маршрутизации URL-адресов?
  • Python и регулярное выражение с Unicode
  • Разделить строку заглавными буквами
  • >>> s = "<html><head><title>Current IP Check</title></head><body>Current IP Address: 165.91.15.131</body></html>" 

    – «165.91.15.131» – это то, что я хочу!

    Я попытался использовать регулярное выражение, но до сих пор я могу получить только первое число.

     >>> import re >>> ip = re.findall( r'([0-9]+)(?:\.[0-9]+){3}', s ) >>> ip ['165'] 

    На самом деле, я не чувствую, что у меня есть четкое понимание рег-выражения, и приведенный выше код был найден и изменен из других источников в Интернете.

    Ищите свои идеи и идеи!

  • Найти подстроку в строке, но только целые слова?
  • найти точное соответствие для строки
  • Эквивалент команды вставки R для вектора чисел в Python
  • Любой лучший способ сделать a = b + a?
  • Как проверить, упорядочены ли символы в строке по алфавиту
  • Что делает форматирование символа% c в Python и его использование?
  • 5 Solutions collect form web for “Извлечь IP-адрес из строки html (python)”

    Удалите группу захвата:

     ip = re.findall( r'[0-9]+(?:\.[0-9]+){3}', s ) 

    Результат:

     ['165.91.15.131'] 

    Заметки:

    • Если вы разбираете HTML, возможно, стоит взглянуть на BeautifulSoup .
    • Ваше регулярное выражение соответствует некоторым недопустимым IP-адресам, таким как 0.00.999.9999 . Это не обязательно проблема, но вы должны знать об этом и, возможно, справиться с этой ситуацией. Вы можете изменить + на {1,3} для частичного исправления, не делая регулярное выражение чрезмерно сложным.

    Вы можете использовать следующее регулярное выражение для захвата только действительных IP-адресов

     re.findall(r'\b25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?\.25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?\.25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?\.25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?\b',s) 

    возвращается

     ['165', '91', '15', '131'] 
     import re ipPattern = re.compile('\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}') findIP = re.findall(ipPattern,s) findIP contains ['165.91.15.131'] 

    Вот как я это сделал. Я думаю, что это так чисто

     import re import urllib2 def getIP(): ip_checker_url = "http://checkip.dyndns.org/" address_regexp = re.compile ('\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}') response = urllib2.urlopen(ip_checker_url).read() result = address_regexp.search(response) if result: return result.group() else: return None 

    get_IP () возвращает ip в строку или None

    Вы можете заменить address_regexp для других регулярных выражений, если вы предпочитаете более точный синтаксический анализ или, возможно, изменить поставщика веб-услуг.

    Самый простой способ найти ip-адрес из журнала.

      s = "<html><head><title>Current IP Check</title></head><body>Current IP Address: 165.91.15.131</body></html>" info = re.findall(r'[\d.-]+', s) 

    В [42]: информация

    Out [42]: ['165.91.15.131']

    Python - лучший язык программирования в мире.