কিছু উদাহরণ, কিছু চিনির বাক্য গঠন সহ কীভাবে সেই জিনিসগুলির জন্য urllib ব্যবহার করবেন। আমি অনুরোধ এবং অন্যান্য গ্রন্থাগারগুলি সম্পর্কে জানি, তবে urllib পাইথনের স্ট্যান্ডার্ড লাইব এবং আলাদাভাবে কোনও কিছু ইনস্টল করার প্রয়োজন হয় না doesn't
পাইথন 2/3 সামঞ্জস্যপূর্ণ।
import sys
if sys.version_info.major == 3:
from urllib.request import HTTPPasswordMgrWithDefaultRealm, HTTPBasicAuthHandler, Request, build_opener
from urllib.parse import urlencode
else:
from urllib2 import HTTPPasswordMgrWithDefaultRealm, HTTPBasicAuthHandler, Request, build_opener
from urllib import urlencode
def curl(url, params=None, auth=None, req_type="GET", data=None, headers=None):
post_req = ["POST", "PUT"]
get_req = ["GET", "DELETE"]
if params is not None:
url += "?" + urlencode(params)
if req_type not in post_req + get_req:
raise IOError("Wrong request type \"%s\" passed" % req_type)
_headers = {}
handler_chain = []
if auth is not None:
manager = HTTPPasswordMgrWithDefaultRealm()
manager.add_password(None, url, auth["user"], auth["pass"])
handler_chain.append(HTTPBasicAuthHandler(manager))
if req_type in post_req and data is not None:
_headers["Content-Length"] = len(data)
if headers is not None:
_headers.update(headers)
director = build_opener(*handler_chain)
if req_type in post_req:
if sys.version_info.major == 3:
_data = bytes(data, encoding='utf8')
else:
_data = bytes(data)
req = Request(url, headers=_headers, data=_data)
else:
req = Request(url, headers=_headers)
req.get_method = lambda: req_type
result = director.open(req)
return {
"httpcode": result.code,
"headers": result.info(),
"content": result.read()
}
"""
Usage example:
"""
Post data:
curl("http://127.0.0.1/", req_type="POST", data='cascac')
Pass arguments (http://127.0.0.1/?q=show):
curl("http://127.0.0.1/", params={'q': 'show'}, req_type="POST", data='cascac')
HTTP Authorization:
curl("http://127.0.0.1/secure_data.txt", auth={"user": "username", "pass": "password"})
ফাংশনটি সম্পূর্ণ নয় এবং সম্ভবত আদর্শ নয়, তবে এটি ব্যবহারের জন্য একটি মৌলিক উপস্থাপনা এবং ধারণাটি দেখায়। অতিরিক্ত জিনিসগুলি স্বাদে যুক্ত বা পরিবর্তন করা যেতে পারে।
12/08 আপডেট
লাইভ আপডেটেড উত্সটির জন্য এখানে একটি গিটহাব লিঙ্ক। বর্তমানে সমর্থন: