Skip to main content

Parse a given domain and split it into its subdomain, domain and top-level domain parts.

Project description

TLDParse

Split a given domain into its different parts (subdomain, domain, suffix).

It was built in the aim to be very fast. To do so, it starts in reverse, going from the TLD down to any subdomains.

Installation

pip install tldparse

Basic usage

The following code will show you the basic usage you can have from this library.

from tldparse import DomainResult

parsed = DomainResult('https://example.github.io/with/some/path')
print(parsed.tld) # io
print(parsed.domain) # github
print(parsed.subdomain) # example

Common usage

A common usage is to check whereas the given domain is the fqdn or if it has subdomains

from tldparse import DomainResult

email = 'user@sub.domain.com'
mbox, domain = email.split('@')

parsed = DomainResult(domain)
assert parsed.fqdn == domain, "Please register using a domain with no subdomain parts"

Advanced usage

Replacing TLDParse with a custom one:

DomainResult class use the default TLDParse object that relies on the list of suffixes provided by Mozilla. (The list is freely available at https://publicsuffix.org/list/public_suffix_list.dat)

But you can either pass another parser, such as:

class MyCustomParser:
    def __call__(self, domain, private=True):
        # PLEASE DON'T DO THAT
        return domain.rsplit('.', 2)  # Consider a TLD has only one part. Ignores things such as ".co.uk"

from tldparse import DomainResult

parser = MyCostumParser()

result = DomainResult('example.github.com', parser=parser)
print(result.fqdn)  # github.com

result = DomainResult('bbc.co.uk', parser=parser)
print(result.fqdn)  # co.uk  # Too bad

Using private subdomains:

By default, the library will consider the subdomains as part of the fqdn for certain domain. But you can change this behavior by setting the private parameter to True.

from tldparse import DomainResult

result = DomainResult('example.github.io')
print(result.fqdn) # example.github.io

result = DomainResult('example.github.io', private=False)
print(result.fqdn) # github.io

Adding/Removing TLDs entries:

You can add/remove entries to the parser by using the add/remove methods of the tldparse object:

from .tldparse import TLDParse, DomainResult

# Adding a custom domain
parser.add('weebly.co.uk')  # added in private
result = DomainResult('example.weebly.co.uk', parser=parser, private=False)
print(result.suffix)  # 'co.uk'
print(result.domain)  # 'weebly'
print(result.subdomain)  # 'example'

result = DomainResult('example.weebly.co.uk', parser=parser)
print(result.suffix)  # 'weebly.co.uk'
print(result.domain)  # 'example'

# Removing a domain
TLDParse.remove('github.io')
result = DomainResult('example.github.io')
print(result.suffix)  # 'io'
print(result.domain)  # 'github'
print(result.subdomain)  # 'example'

Support

If you find an issue, please open a support requests, or even better, a Pull Requests :)

Thank you!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tldparse-1.0.0.tar.gz (6.1 kB view details)

Uploaded Source

Built Distribution

tldparse-1.0.0-py2.py3-none-any.whl (6.0 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file tldparse-1.0.0.tar.gz.

File metadata

  • Download URL: tldparse-1.0.0.tar.gz
  • Upload date:
  • Size: 6.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.5

File hashes

Hashes for tldparse-1.0.0.tar.gz
Algorithm Hash digest
SHA256 2dd1091f2732b0620a71bd2da3a0ab392e2c87841a620554dfd96d1f43813ea1
MD5 d871f363b84ed263d28175236b782416
BLAKE2b-256 777729e9a6872ba20d74e4d33fb71c2e5f68d91864eb95b48b52c1d31dcf69ad

See more details on using hashes here.

File details

Details for the file tldparse-1.0.0-py2.py3-none-any.whl.

File metadata

  • Download URL: tldparse-1.0.0-py2.py3-none-any.whl
  • Upload date:
  • Size: 6.0 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.5

File hashes

Hashes for tldparse-1.0.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 509e47c7446e308ddc8471d45b745f094cf7f60828b37bf6007683a570ce78b0
MD5 eaee1804de01d2af0643a53f8116f24b
BLAKE2b-256 5f6efd65ddaea7f12e0a25b14e5d6b52e6cbc115b6f97892f0bdbea0374f46e2

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page