Python urlparse -- extract domain name without subdomain
Question: Need a way to extract a domain name without the subdomain from a url using
Python urlparse.

For example, I would like to extract `"google.com"` from a full url like
`"http://www.google.com"`.

The closest I can seem to come with `urlparse` is the `netloc` attribute, but
that includes the subdomain, which in this example would be `www.google.com`.

I know that it is possible to write some custom string manipulation to turn
www.google.com into google.com, but I want to avoid by-hand string transforms
or regex in this task. (The reason for this is that I am not familiar enough
with url formation rules to feel confident that I could consider every edge
case required in writing a custom parsing function.)

Or, if `urlparse` can't do what I need, does anyone know any other Python url-
parsing libraries that would?


Answer: You probably want to check out
[tldextract](http://pypi.python.org/pypi/tldextract), a library designed to do
this kind of thing.

It uses the Public Suffix List to try and get a decent split based on known
gTLDs, but do note that this is just a brute-force list, nothing special, so
it can get out of date (although hopefully it's curated so as not to).

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

So in your case:

    
    
    >>> extracted = tldextract.extract('http://www.google.com')
    >>> "{}.{}".format(extracted.domain, extracted.suffix)
    "google.com"
    

