14

I have an url like: http://xxx.abcdef.com/fdfdf/

And I want to get xxx.abcdef.com

Which module can i use for accomplish this?

I want to use the same module and method at python2 and python3

I don't like the try except way for python2/3 compatibility

Thanks you so much!

fj123x
  • 6,904
  • 12
  • 46
  • 58
  • 3
    `url.split('/')[2]` Have you read a full Python tuto? I like this one: http://www.diveintopython.net/ – MGP Feb 04 '14 at 21:27

2 Answers2

33

Use urlparse:

from urlparse import urlparse
o = urlparse("http://xxx.abcdef.com/fdfdf/")
print o

print o.netloc

In Python 3, you import urlparse like so:

from urllib.parse import urlparse

Alternatively, just use str.split():

url = "http://xxx.abcdef.com/fdfdf/"

print url.split('/')[2]

Sidenote: Here's how you write an import of urlparse that will work in either version:

if sys.version_info >= (3, 0):
    from urllib.parse import urlparse
if sys.version_info < (3, 0) and sys.version_info >= (2, 5):
    from urlparse import urlparse
jgritty
  • 11,660
  • 3
  • 38
  • 60
8

You can use 3rd party library six, which takes care of compatibility issues between python versions and standard library function urlparse to extract the hostname

so all you need to do is install six and import urlparse

from six.moves.urllib.parse import urlparse
u = urlparse("http://xxx.abcdef.com/fdfdf/")
print(u.hostname)

More on urlparse here

Community
  • 1
  • 1
swapnil jariwala
  • 1,064
  • 2
  • 12
  • 19