urllib.parse मॉड्यूल URL स्ट्रिंग्स को कंपोनेंट्स में तोड़ने और वापस जोड़ने के लिए मानक इंटरफेस प्रदान करता है।
समर्थित URL स्कीम्स
http, https, ftp, file, mailto, ws, wss, sftp, ssh, telnet, आदि (कुल 25+ स्कीम्स)।
urlparse(): URL को 6 कंपोनेंट्स में पार्स करें
from urllib.parse import urlparse
url = 'https://mail.google.com/mail/u/0/?tab=rm#inbox'
result = urlparse(url)
print(result)
# ParseResult(scheme='https', netloc='mail.google.com', path='/mail/u/0/',
# params='', query='tab=rm', fragment='inbox')
कंपोनेंट्स
| एट्रिब्यूट | इंडेक्स | विवरण |
|---|---|---|
| scheme | 0 | URL स्कीम (http, https, आदि) |
| netloc | 1 | नेटवर्क लोकेशन (होस्ट:पोर्ट) |
| path | 2 | पाथ |
| params | 3 | पाथ पैरामीटर्स (दुर्लभ) |
| query | 4 | क्वेरी स्ट्रिंग |
| fragment | 5 | फ्रैगमेंट (# के बाद) |
अतिरिक्त एट्रिब्यूट्स
result.username # यूज़रनेम (यदि मौजूद)
result.password # पासवर्ड
result.hostname # होस्टनाम (लोअरकेस)
result.port # पोर्ट नंबर (इंटीजर)
urlunparse(): कंपोनेंट्स से URL बनाएं
from urllib.parse import urlunparse
parts = ('https', 'mail.google.com', '/mail/u/0/', '', 'tab=rm', 'inbox')
print(urlunparse(parts))
# https://mail.google.com/mail/u/0/?tab=rm#inbox
urlsplit() / urlunsplit()
urlparse जैसा लेकिन params को अलग नहीं करता (5-टपल)।
from urllib.parse import urlsplit, urlunsplit
result = urlsplit(url)
# SplitResult(scheme='https', netloc='mail.google.com', path='/mail/u/0/',
# query='tab=rm', fragment='inbox')
print(urlunsplit(result))
URL क्वोटिंग फ़ंक्शन्स
quote(string, safe='/')
स्पेशल कैरेक्टर्स को %xx में एन्कोड करता है।
from urllib.parse import quote, unquote
url = 'https://mail.google.com/mail/u/0/?tab=rm#inbox'
q = quote(url)
print(q) # https%3A//mail.google.com/mail/u/0/%3Ftab%3Drm%23inbox
print(unquote(q)) # मूल URL वापस
quote_plus() / unquote_plus()
स्पेस को + में बदलता है (HTML फॉर्म्स के लिए)।
print(quote_plus('hello world')) # hello+world
print(unquote_plus('hello+world')) # hello world
urlencode(): डिक्शनरी/सीक्वेंस को क्वेरी स्ट्रिंग में
from urllib.parse import urlencode
params = {"name": "Rajeev", "salary": 20000}
query = urlencode(params)
print(query) # name=Rajeev&salary=20000
# URL में जोड़ें
base = "https://example.com/api?"
full_url = base + query
print(full_url) # https://example.com/api?name=Rajeev&salary=20000
parse_qs() / parse_qsl(): क्वेरी स्ट्रिंग पार्स करें
from urllib.parse import parse_qs, parse_qsl
qs = "name=Rajeev&salary=20000&name=Alice"
print(parse_qs(qs)) # {'name': ['Rajeev', 'Alice'], 'salary': ['20000']}
print(parse_qsl(qs)) # [('name', 'Rajeev'), ('salary', '20000'), ('name', 'Alice')]
urljoin(): रिलेटिव URL को एब्सोल्यूट बनाएं
from urllib.parse import urljoin
base = 'https://example.com/dir/page.html'
print(urljoin(base, 'sub/page.html')) # https://example.com/dir/sub/page.html
print(urljoin(base, '/absolute/path')) # https://example.com/absolute/path
print(urljoin(base, '../other.html')) # https://example.com/other.html
सर्वोत्तम अभ्यास
- URL निर्माण के लिए हमेशा
urlencode+urljoinउपयोग करें - मैन्युअल स्ट्रिंग कन्कैटनेशन एरर-प्रोन है। - यूज़र इनपुट को URL में डालने से पहले
quoteकरें। ParseResultऑब्जेक्ट्स नामित टपल्स हैं - इंडेक्स या एट्रिब्यूट नाम से एक्सेस करें।