2010-05-26 6 views
4

Comment voulez-vous diviser un nom de domaine qui renvoie le nom et l'extensionpython nom split nom de domaine et l'extension

+0

Cette question stackoverflow peut être utile: http://stackoverflow.com/questions/1066933/python-extract-domain-name-from-url –

Répondre

4
domain = 'subdomain.domain.ext' 
name, ext = domain.split('.')[-2:] 
+6

Echoue pour http://www.google.co.uk/. –

2

Vous voulez dire que le nom de domaine internet, comme www.stackoverflow.com? Si oui, alors il suffit d'utiliser:

>>> 'www.stackoverflow.com'.rsplit('.', 1) 
['www.stackoverflow', 'com'] 
4

En fonction de votre demande, être un peu méfiant de prendre simplement la partie qui suit le dernier. ». Cela fonctionne bien pour .com, .net, .org, etc, mais tombera probablement pour de nombreux TLD County Code. Par exemple. bit.ly ou google.co.uk.

(je veux dire par « bit.ly » préfèrent probablement être identifié y compris le TLD .ly alors que google probablement ne pas veulent être identifiés avec un reste de .co faux. Que ce qui est important sera évidemment dépend de ce que vous faites).

Dans ces cas compliqués ... eh bien, vous avez votre travail découpé je soupçonne! Une réponse robuste dépendra probablement de la façon dont vous rassemblez/stockez vos domaines et de ce que vous voulez réellement obtenir en tant que «nom».

Par exemple, si vous avez un ensemble de noms de domaine, sans information sous-domaine, vous pouvez faire l'inverse de ce qui est suggéré ci-dessus et il suffit de prendre la première partie de:

>>> "stackoverflow.com".split('.')[0] 
'stackoverflow' 
0

Si vous veulent toujours obtenir la dernière partie d'un nom de domaine, vous pouvez:

subdomain, _, domain= fqdn.rpartition('.') 
1

En général, il n'est pas facile de déterminer où le bit enregistré par l'utilisateur se termine et le bit de registre commence. Par exemple: a.com, b.co.uk, c.us, d.ca.us, e.uk.com, f.pvt.k12.wy.us ...

Les gens sympas chez Mozilla avoir un projet dédié à la liste des suffixes de domaine sous lesquels le public peut enregistrer des domaines: http://publicsuffix.org/

1

Wow, il y a beaucoup de mauvaises réponses ici. Vous pouvez seulement faire cela si vous savez ce qui est sur la liste des suffixes publics. Si vous utilisez split ou une regex ou autre chose, vous vous trompez.

Heureusement, ce python est, et il y a une bibliothèque pour cela: https://pypi.python.org/pypi/tldextract

De leur readme:

>>> import tldextract 
>>> tldextract.extract('http://forums.news.cnn.com/') 
ExtractResult(subdomain='forums.news', domain='cnn', suffix='com') 

ExtractResult est un namedtuple. Ça rend la tâche plutôt facile.

Questions connexes