# liburlparser for Python
Fastest domain extractor library for Python
Complete library for parsing URLs with Python and Command Line
## Overview
**liburlparser** is a powerful domain extractor library written in C++ with Python bindings. It provides efficient URL parsing capabilities for Python, making it a valuable tool for projects that involve working with web addresses.
### Key Features
- **High Performance**: Significantly faster than pure Python alternatives
- **Intuitive Interface**: Simple, easy-to-use API
- **Clean Code Design**: Separate `Url` and `Host` classes for organized code
- **Public Suffix List Support**: Handles known combinatorial suffixes (e.g., "ac.ir")
- **Unknown Suffix Support**: Can handle unknown suffixes (e.g., "comm" in "google.comm")
- **Automatic PSL Updates**: Updates the public_suffix_list automatically
- **Comprehensive Properties**: Access all parts of URLs and hosts with simple property access
- **Command Line Interface**: Parse URLs directly from the command line
## Quick Start
```python
from liburlparser import Url, Host
# Parse a URL
url = Url("https://mail.google.com/about")
print(url.domain) # Output: google
print(url.suffix) # Output: com
print(url.protocol) # Output: https
# Parse a host
host = Host("mail.google.com")
print(host.subdomain) # Output: mail
print(host.domain) # Output: google
print(host.suffix) # Output: com
```
## Command Line
```bash
python -m liburlparser --url "https://mail.google.com/about" | jq
python -m liburlparser --host "mail.google.com" | jq
```
## Why liburlparser?
- **Performance**: Significantly faster than other domain extraction libraries
- **Ease of Use**: Simple, intuitive API
- **Comprehensive**: Handles all parts of URLs and hosts
- **Reliable**: Built on the Public Suffix List for accurate domain extraction
Check out the [Installation](installation.md) guide to get started, or dive into the [Basic Usage](usage/basic.md) documentation to learn more.
## Performance Comparison
### Extract From Host
Tests were run on a file containing 10 million random domains from various top-level domains:
| Library | Function | Time |
| ------------- | ------------- | ------------- |
| **liburlparser** | liburlparser.Host | **1.12s** |
| PyDomainExtractor | pydomainextractor.extract | 1.50s |
| publicsuffix2 | publicsuffix2.get_sld | 9.92s |
| tldextract | \_\_call\_\_ | 29.23s |
| tld | tld.parse_tld | 34.48s |
### Extract From URL
Tests were run on a file containing 1 million random URLs:
| Library | Function | Time |
| ------------- | ------------- | ------------- |
| **liburlparser** | liburlparser.Host.from_url | **2.10s** |
| PyDomainExtractor | pydomainextractor.extract_from_url | 2.24s |
| publicsuffix2 | publicsuffix2.get_sld | 10.84s |
| tldextract | \_\_call\_\_ | 36.04s |
| tld | tld.parse_tld | 57.87s |
```{toctree}
:maxdepth: 1
:hidden:
Overview
installation
usage/basic
usage/advanced
usage/cli
api/reference
api/url
api/host
api/psl
examples
performance
```