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
Built Distribution
File details
Details for the file tldparse-1.0.3.tar.gz
.
File metadata
- Download URL: tldparse-1.0.3.tar.gz
- Upload date:
- Size: 93.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | aa1075c008d27e57ff5c5658853e2f4af1421eee38aebcd646a301ab4d89d057 |
|
MD5 | 74c2e5957672665f828253f8af67cb7b |
|
BLAKE2b-256 | 9823c987a279c3ecc0c5b239e0668cfd7a2581a5e99066cefb78c367a77626d6 |
File details
Details for the file tldparse-1.0.3-py2.py3-none-any.whl
.
File metadata
- Download URL: tldparse-1.0.3-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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 14a93e6ffc95700ed282d10a4737bbe4a3553513ffda7d0ae4c0243d8868a07b |
|
MD5 | ec88a954d7cb5da7c2708f7e37c833cd |
|
BLAKE2b-256 | 5efeb54776eff77aee38228f9aa6d2ff589db90ca379515e23dc29e958cc91cf |