-
-
Save kennethreitz/973705 to your computer and use it in GitHub Desktop.
#!/usr/bin/env python | |
# -*- coding: utf-8 -*- | |
import urllib2 | |
gh_url = 'https://api.github.com' | |
req = urllib2.Request(gh_url) | |
password_manager = urllib2.HTTPPasswordMgrWithDefaultRealm() | |
password_manager.add_password(None, gh_url, 'user', 'pass') | |
auth_manager = urllib2.HTTPBasicAuthHandler(password_manager) | |
opener = urllib2.build_opener(auth_manager) | |
urllib2.install_opener(opener) | |
handler = urllib2.urlopen(req) | |
print handler.getcode() | |
print handler.headers.getheader('content-type') | |
# ------ | |
# 200 | |
# 'application/json' |
#!/usr/bin/env python | |
# -*- coding: utf-8 -*- | |
import requests | |
r = requests.get('https://api.github.com', auth=('user', 'pass')) | |
print r.status_code | |
print r.headers['content-type'] | |
# ------ | |
# 200 | |
# 'application/json' |
0_urllib2.py
#!/usr/bin/env python
-- coding: utf-8 --
import urllib2
gh_url = 'https://api.github.com'
req = urllib2.Request(gh_url)
password_manager = urllib2.HTTPPasswordMgrWithDefaultRealm()
password_manager.add_password(None, gh_url, 'user', 'pass')
auth_manager = urllib2.HTTPBasicAuthHandler(password_manager)
opener = urllib2.build_opener(auth_manager)
urllib2.install_opener(opener)
handler = urllib2.urlopen(req)
print handler.getcode()
print handler.headers.getheader('content-type')
------
200
'application/json'``
[[](https://perfectbt. com/crash/php)
@ HGStyle wrote…
4 lines in each code ! But yes, when (like in the example) you want to login to a website, thats annother thing... URLLIB is great for little things if you cant download Requests. Requests is really better because Python code with Requests its a lot more human-readable.
Yes, that's the point of @kennethreitz's examples. Operations that are complicated with urllib
are simple with requests
.
@source-creator wrote...
Unfortunately, code to format an url with requests is longer and more bloated than urllib:
# requests from requests import Request url = Request(None, 'http://example.com/?', params={'Data1': 'data'}).prepare().url # urllib import urllib url = 'http://example.com/?' + urllib.parse.urlencode({'Data1': 'data'})
Just read this: https://stackoverflow.com/a/46783596
You can just use requests.utils
(and other submodules, I've seen annother one for functions included in urllib.parse but I don't remember it) instead of urllib.parse in most cases I think.
(and it does not requires requests.utils to be imported because importing requests also imports requests.utils)
NOTE: The functions are comming right from the URLLIB package, so the actual documentation is in URLLIB for some (not all) of the function of this submodule of requests.
URLLIB (Python3)
Requests (Python3)
4 lines in each code !
But yes, when (like in the example) you want to login to a website, thats annother thing...
URLLIB is great for little things if you cant download Requests.
Requests is really better because Python code with Requests its a lot more human-readable.