Comment scinderiez-vous un nom de domaine qui retournera le nom et l'extension p>
9 Réponses :
Vous voulez dire un nom de domaine Internet, comme www.stackoverflow.com? Si oui, utilisez simplement simplement:
>>> 'www.stackoverflow.com'.rsplit('.', 1)
['www.stackoverflow', 'com']
Et si mon FQDN est quelque chose comme "madup.name.madeup.domain.co.in"?
domain = 'subdomain.domain.ext'
name, ext = domain.split('.')[-2:]
Cela ne fonctionne que pour les domaines américains de haut niveau, dans le formulaire .com, .org, .ext, etc. pour d'autres régions Utilisez la bibliothèque TLDExtract comme décrit dans la réponse de Mlissner ci-dessous.
Domaine = ' nom Google.com ' Nom, ext = domain.split ('.') [- 2:] Imprimer (Nom) Imprimer (EXT) # Ici IT IT IMPRIMIER AS Nom: " Google " Domaine = "com /
Selon votre application, soyez un peu méfiant de simplement prendre la partie après la dernière ".". Cela fonctionne bien pour .com, .net, .org, etc. mais tombera probablement sur de nombreux Code TLDS. Par exemple. Bit.ly ou google.co.uk .
(par lequel je veux dire" bit "préférera probablement être identifié y compris em> le dans ces cas compliqués ... Eh bien, vous avez Votre travail découpé que je soupçonne! p> Une réponse robuste dépendra probablement de la façon dont vous rassemblez / stockez vos domaines et ce que vous voulez vraiment en retour comme le «nom». p> Par exemple, si vous avez un ensemble de noms de domaine, sans aucune information sous-domaines, vous pourriez faire le contraire de ce qui est suggéré ci-dessus et simplement prendre la première partie off: P> >>> "stackoverflow.com".split('.')[0]
'stackoverflow'
Vous dites donc qu'un nom d'hôte ne peut pas être hôte.nom? Nom?
Si vous souhaitez toujours obtenir la dernière partie d'un nom de domaine, vous pouvez:
subdomain, _, domain= fqdn.rpartition('.')
Je suppose que vous trouverez urlparse cod> module intéressant: http: / /docs.python.org/library/urlparse.html P>
En général, il n'est pas facile de déterminer où se termine le bit enregistré par l'utilisateur 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 ... p>
Les gentils personnes de Mozilla ont un projet dédié à la liste des suffixes de domaine sous lesquels le public peut enregistrer des domaines: http: // Publicsuffix. org / p>
wow, il y a beaucoup de mauvaises réponses ici. Vous pouvez seulement em> le faire si vous savez ce qui est sur la liste de suffixe publique. Si vous utilisez Heureusement, c'est Python, et il y a une bibliothèque pour cela: https://pypi.python.org / PYPI / TLDEXtract P> à partir de leur lecture: P> Split code> ou une regex ou quelque chose d'autre, vous faites ce mal. >>> import tldextract
>>> tldextract.extract('http://forums.news.cnn.com/')
ExtractResult(subdomain='forums.news', domain='cnn', suffix='com')
Ce serait bien si cela fonctionnait de manière fiable, mais cela ne fonctionne pas du tout de manière fiable. La moitié du temps qu'il pense que le domaine fait partie du nom d'hôte et d'autres fois, il pense que le suffixe est le domaine.
Pouvez-vous fournir quelques exemples?
Nous avons un domaine appelé clmlb.loc où il a décidé que les machines nommées: ServerName.clmlb.loc - Le domaine était local tandis que le CLMLB était le nom de serveur et il a chuté le nom de serveur entièrement. J'ai eu un temps plus facile à utiliser la méthode Split dans ce cas. En tout cas, je voulais de toute façon seulement xxxx.xxx à la fin.
Eh bien ... euh, .loc code> n'est pas un vrai suffixe, n'est-ce pas? Cela ne fonctionne que sur de vrais noms de domaine.
Merci! C'est une grande libère pour ce travail
Si vous savez que votre pseudo-tld est ".loc" ... ne pouvez pas simplement rouler votre propre wrapper pour faire hostname.replace ('. Loc', '. Com') code> sur le chemin En arrière et inverse sur le chemin du sentier ... pouvait même utiliser des patchs de singe pour le rendre transparent (jusqu'à ce que TLDExtract prend en charge Psuedo TLDS, à moins que cela ne le fait déjà ...)
Très bonne réponse. J'ai aussi confronté cette question. Parfois, vous obtenez quelque chose comme Yahoo.com.sg. À l'aide de Regex, Yahoo sera considéré comme le sous-domaine, com la pourriture et SG l'extension qui n'est pas correcte.
C'est ce que j'ai trouvé. Rien d'extraordinaire. Ça marche pour moi. Bien que je crois que cela donne des commentaires étranges parfois quand il y a des personnages comme?, +, Ainsi de suite. Je ne comprend toujours pas pourquoi.
Au fur et à mesure que les autres commentateurs ont souligné, il n'y a pas de moyen de faire face à cela, à compter d'une liste de TLD et de GTLD de manière dynamique. Ce qui fonctionne pour Il y a donc deux approches très différentes: p> dans mon expérience, ce qui suit satisfait # 2 bien, en supposant que vous avez déjà dépouillé le protocole et le chemin d'accès: p> Essayez-le avec une certaine étrangeté: un google.com code> pourrait ne pas fonctionner pour google.co.uk code> ou quelque chose.co.xx code> ou quelque chose. com.xx code>. À peu près tout ce qui peut être dans un TLD ou un GTLD et qui sait ce que l'avenir détient ?
.com.au code>, .Media code>, .in code>, .Ä¸Ä ' code> etc. p> p>
Cette question Stackoverflow peut être utile: Stackoverflow.com / Questions / 1066933 / ...