Получить имя хоста достаточно просто, используя urlparse :
hostname = urlparse.urlparse("http://www.techcrunch.com/").hostname
Однако получить «корневой домен» будет более проблематично, поскольку он не определен всинтаксический смысл.Что является корневым доменом "www.theregister.co.uk"?Как насчет сетей, использующих домены по умолчанию?"devbox12" может быть допустимым именем хоста.
Один из способов справиться с этим - использовать Public Suffix List , который пытается каталогизировать оба реальных домена верхнего уровня (например, ".com", ".net", ".org"), а также частные домены, которые используются как TLD (например, ".co.uk" или даже ".github.io").Вы можете получить доступ к PSL из Python с помощью библиотеки publicsuffix2 :
import publicsuffix
import urlparse
def get_base_domain(url):
# This causes an HTTP request; if your script is running more than,
# say, once a day, you'd want to cache it yourself. Make sure you
# update frequently, though!
psl = publicsuffix.fetch()
hostname = urlparse.urlparse(url).hostname
return publicsuffix.get_public_suffix(hostname, psl)