2010-05-26 2 views

ответ

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

Не удается найти http://www.google.co.uk/. –

2

Вы имеете в виду Интернет доменное имя, как www.stackoverflow.com? Если это так, то просто использовать:

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

В зависимости от приложения, будет немного опасаться просто принимать участие, следующего за последним «». Это отлично подходит для .com, .net, .org и т. Д., Но, скорее всего, упадет для многих County Code TLD. Например. bit.ly или google.co.uk.

(я имею в виду «bit.ly», вероятно, предпочитают, чтобы идентифицировать включая в .ly TLD, тогда как Google, вероятно, не хотите быть идентифицированы с помощью поддельного .co остатка. Независимо от того, что важно, очевидно, зависит от того, что вы делаете).

В этих сложных случаях ... ну, у вас есть вырезанная работа, я подозреваю!

Надежный ответ, вероятно, будет зависеть от того, как вы собираете/храните свои домены и что вы действительно хотите вернуть в качестве «имени».

Например, если у вас есть набор доменных имен, без субдомена информации, то вы могли бы делать противоположное тому, что было предложено выше, и просто взять первую часть от:

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

Если вы всегда хочу, чтобы получить последнюю часть доменного имени, вы можете:

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

В общем, нелегко определить, где заканчивается зарегистрированный пользователем бит и начинается бит реестра. Например: a.com, b.co.uk, c.us, d.ca.us, e.uk.com, f.pvt.k12.wy.us ...

Приятные люди в Mozilla у вас есть проект, посвященный суффиксам доменов для регистрации, в соответствии с которыми публика может регистрировать домены: http://publicsuffix.org/

1

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

К счастью, это питон, и есть библиотека для этого: https://pypi.python.org/pypi/tldextract

С их ридми:

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

ExtractResult является namedtuple. Делает это довольно легко.

Смежные вопросы