কম্পিউটার টিউটোরিয়াল

পাইথনে urllib.parse - URL কে কম্পোনেন্টে পার্স করা


এই মডিউল একটি স্ট্যান্ডার্ড ইন্টারফেস প্রদান করে Uniform Resource Locator (URL) স্ট্রিং কম্পোনেন্টে ভাঙতে বা কম্পোনেন্টগুলোকে আবার একটি URL স্ট্রিং-এ জোড়াতে। এতে রিলেটিভ URL কে এবসোলিউট URL-এ কনভার্ট করার ফাংশনও রয়েছে একটি বেস URL দিয়ে।

এই মডিউল নিচের URL স্কিমগুলো সাপোর্ট করে:

  • file
  • ftp
  • gopher
  • hdl
  • http
  • https
  • imap
  • mailto
  • mms
  • news
  • nntp
  • prospero
  • rsync
  • rtsp
  • rtspu
  • sftp
  • shttp
  • sip
  • sips
  • snews
  • svn
  • svn+ssh
  • telnet
  • wais
  • ws
  • wss

urlparse()

এই ফাংশন একটি URL কে ছয়টি কম্পোনেন্টে পার্স করে, একটি 6-টাপল রিটার্ন করে। এটি একটি URL-এর সাধারণ কাঠামোর সাথে মিলে। প্রতিটি টাপল আইটেম একটি স্ট্রিং। কম্পোনেন্টগুলো ছোট ছোট অংশে ভাঙা হয় না (উদাহরণস্বরূপ, নেটওয়ার্ক লোকেশন একটি সিঙ্গেল স্ট্রিং), এবং % এস্কেপ এক্সপ্যান্ড করা হয় না। রিটার্ন ভ্যালু tuple-এর একটি সাবক্লাসের ইনস্ট্যান্স যা নিচের অ্যাট্রিবিউটগুলো로 তৈরি:

অ্যাট্রিবিউট ইন্ডেক্স ভ্যালু যদি উপস্থিত না থাকে
scheme 0 URL স্কিম স্পেসিফায়ার scheme parameter
netloc 1 নেটওয়ার্ক লোকেশন অংশ scheme parameter
path 2 হায়ারার্কিক্যাল পাথ খালি স্ট্রিং
params 3 লাস্ট পাথ এলিমেন্টের প্যারামিটার খালি স্ট্রিং
query 4 কোয়েরি কম্পোনেন্ট খালি স্ট্রিং
fragment 5 ফ্র্যাগমেন্ট আইডেন্টিফায়ার খালি স্ট্রিং
username
ইউজার নাম None
password
পাসওয়ার্ড None
hostname
হোস্ট নাম (লোয়ার কেস) None
port
পোর্ট নম্বর ইন্টিজার হিসেবে, যদি উপস্থিত থাকে None

উদাহরণ

>>> from urllib.parse import urlparse
>>> url = 'https://mail.google.com/mail/u/0/?tab = rm#inbox'
>>> t = urlparse(url)
ParseResult(scheme='https', netloc='mail.google.com', path='/mail/u/0/', params='', query='tab = rm', fragment='inbox')

urlunparse(parts)

এই ফাংশন urlparse() দ্বারা রিটার্ন করা টাপল থেকে একটি URL কনস্ট্রাক্ট করে। parts আর্গুমেন্ট যেকোনো ছয়-আইটেম ইটেরেবল হতে পারে।

>>> from urllib.parse import urlunparse
>>> urlunparse(t)
'https://mail.google.com/mail/u/0/?tab = rm#inbox'
urlsplit(urlstring, scheme='', allow_fragments=True):

এটি urlparse()-এর অনুরূপ, কিন্তু URL থেকে params স্প্লিট করে না। এই ফাংশন একটি 5-টাপল রিটার্ন করে: (addressing scheme, network location, path, query, fragment identifier)।

>>> from urllib.parse import urlsplit
>>> urlsplit(url)
SplitResult(scheme='https', netloc='mail.google.com', path='/mail/u/0/', query='tab = rm', fragment='inbox')

urlunsplit(parts)

এই ফাংশন urlsplit() দ্বারা রিটার্ন করা টাপলের এলিমেন্টগুলো কম্বাইন করে একটি কমপ্লিট URL স্ট্রিং-এ।

URL কোটিং ফাংশনগুলো প্রোগ্রাম ডেটা নেয় এবং সেটিকে URL কম্পোনেন্ট হিসেবে ব্যবহার করার জন্য সেফ করে 스페শাল ক্যারেক্টার কোট করে এবং নন-ASCII টেক্সট অ্যাপ্রোপ্রিয়েটলি এনকোড করে।

quote()

এই ফাংশন স্ট্রিং-এ 스페শাল ক্যারেক্টারকে %xx এস্কেপ দিয়ে রিপ্লেস করে। লেটার, ডিজিট, এবং '_.-~' ক্যারেক্টারগুলো কখনো কোট করা হয় না।

>>> from urllib.parse import quote
>>> q = quote(url)
'https%3A//mail.google.com/mail/u/0/%3Ftab%3Drm%23inbox'
quote_plus():

quote()-এর মত, কিন্তু স্পেসকে প্লাস সাইন দিয়ে রিপ্লেস করে, HTML ফর্ম ভ্যালু কোট করার জন্য আবশ্যক কোয়েরি স্ট্রিং তৈরি করার সময় URL-এ যেতে।

unquote()

এই ফাংশন %xx এস্কেপকে তাদের সিঙ্গেল-ক্যারেক্টার সমতুল্যে রিপ্লেস করে।

>>> from urllib.parse import unquote
>>> unquote(q)
'https://mail.google.com/mail/u/0/?tab = rm#inbox'

urlencode()

এই ফাংশন একটি ম্যাপিং অবজেক্ট বা টু-এলিমেন্ট টাপলের একটি সিকোয়েন্সকে, একটি পারসেন্ট-এনকোডেড ASCII টেক্সট স্ট্রিং-এ কনভার্ট করে। ফলাফল স্ট্রিংটি একটি সিরিজ key=value পেয়ার যা '&' ক্যারেক্টার দিয়ে সেপারেটেড।

>>> from urllib.parse import urlencode
>>> qry = {"name":"Rajeev", "salary":20000}
>>> urlencode(qry)
'name=Rajeev&salary=20000'

  1. পাইথন প্যান্ডাস - Timedelta অবজেক্টকে পাইথন timedelta-এ রূপান্তর করুন

  2. পাইথন প্যান্ডাস - কম্পোনেন্টস namedtuple-রূপে ফেরত দিন

  3. Python - Pandas কে সেটে টাইপকাস্ট করা

  4. পাইথনে প্রোগ্রাম্যাটিক্যালি ওয়েব ব্রাউজারে URL খোলা (tkinter)