Извлечение доменного имени из URL с использованием регулярного выражения Python - PullRequest
0 голосов
/ 26 апреля 2019

Я хочу ввести URL-адрес и извлечь имя домена, которое представляет собой строку, которая идет после http: // или https: // и содержит строки, числа, точки, подчеркивания или тире.

Я написал регулярное выражение и использовал модуль re Python следующим образом:

import re
m = re.search('https?://([A-Za-z_0-9.-]+).*', 'https://google.co.uk?link=something')
m.group(1)
print(m)

Насколько я понимаю, m.group(1) извлечет часть между () в re.search.

Результат, который я ожидаю: google.co.uk Но я получаю это:

<_sre.SRE_Match object; span=(0, 35), match='https://google.co.uk?link=something'>

Можете ли вы указать мне, как использовать re для выполнения моего требования?

Ответы [ 2 ]

2 голосов
/ 26 апреля 2019

Вам нужно написать

print(m.group(1))

Еще лучше - есть условие раньше:

m = re.search('https?://([A-Za-z_0-9.-]+).*', 'https://google.co.uk?link=something')
if m:
    print(m.group(1))
0 голосов
/ 26 апреля 2019

Существует библиотека с именем tldextract , которая в этом случае очень надежна.

Вот как это будет работать

import tldextract

def extractDomain(url):
    if "http" in str(url) or "www" in str(url):
        parsed = tldextract.extract(url)
        parsed = ".".join([i for i in parsed if i])
        return parsed
    else: return "NA"

op = open("out.txt",'w')
# with open("test.txt") as ptr:
#   for lines in ptr.read().split("\n"):
#       op.write(str(extractDomain(lines)) + "\n")

print(extractDomain("https://test.pythonhosted.org/Flask-Mail/"))

вывод следующим образом:

test.pythonhosted.org
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...