requests, czyli http dla ludzi
DESCRIPTION
PyWaw 11 lipca 2011TRANSCRIPT
![Page 1: requests, czyli HTTP dla ludzi](https://reader031.vdocuments.mx/reader031/viewer/2022020122/5500141b4a7959e6728b5031/html5/thumbnails/1.jpg)
httplib urllib(2) requests na ratunek
requests, czyli HTTP dla ludzi
Zbigniew Siciarz
PyWaw 11 lipca 2011
@zsiciarz
requests, czyli HTTP dla ludzi
![Page 2: requests, czyli HTTP dla ludzi](https://reader031.vdocuments.mx/reader031/viewer/2022020122/5500141b4a7959e6728b5031/html5/thumbnails/2.jpg)
httplib urllib(2) requests na ratunek
Plan prezentacji
1 httplib
2 urllib(2)
3 requests na ratunek
@zsiciarz
requests, czyli HTTP dla ludzi
![Page 3: requests, czyli HTTP dla ludzi](https://reader031.vdocuments.mx/reader031/viewer/2022020122/5500141b4a7959e6728b5031/html5/thumbnails/3.jpg)
httplib urllib(2) requests na ratunek
httplib
import httplib
conn = httplib.HTTPConnection("httpbin.org")conn.request("GET", "/status /418")response = conn.getresponse ()print response.status , response.reasonprint response.read()
@zsiciarz
requests, czyli HTTP dla ludzi
![Page 4: requests, czyli HTTP dla ludzi](https://reader031.vdocuments.mx/reader031/viewer/2022020122/5500141b4a7959e6728b5031/html5/thumbnails/4.jpg)
httplib urllib(2) requests na ratunek
httplib
zbyszek@wicherek :~/ Dokumenty/requests$ python code/httplib1.py418 I’M A TEAPOT
-=[ teapot ]=-
_...._.’ _ _ ‘.
| ."‘ ^ ‘". _,\_;‘"---" ‘|//
| ;/\_ _/
‘"""‘
@zsiciarz
requests, czyli HTTP dla ludzi
![Page 5: requests, czyli HTTP dla ludzi](https://reader031.vdocuments.mx/reader031/viewer/2022020122/5500141b4a7959e6728b5031/html5/thumbnails/5.jpg)
httplib urllib(2) requests na ratunek
urllib/urllib2
obie biblioteki w stdlib
ró»na funkcjonalno±¢
urllib: kodowanie parametrów, pobieranie wprost do pliku
urllib2: obsªuga otwieraczy
@zsiciarz
requests, czyli HTTP dla ludzi
![Page 6: requests, czyli HTTP dla ludzi](https://reader031.vdocuments.mx/reader031/viewer/2022020122/5500141b4a7959e6728b5031/html5/thumbnails/6.jpg)
httplib urllib(2) requests na ratunek
urllib/urllib2
obie biblioteki w stdlib
ró»na funkcjonalno±¢
urllib: kodowanie parametrów, pobieranie wprost do pliku
urllib2: obsªuga otwieraczy
@zsiciarz
requests, czyli HTTP dla ludzi
![Page 7: requests, czyli HTTP dla ludzi](https://reader031.vdocuments.mx/reader031/viewer/2022020122/5500141b4a7959e6728b5031/html5/thumbnails/7.jpg)
httplib urllib(2) requests na ratunek
urllib/urllib2
obie biblioteki w stdlib
ró»na funkcjonalno±¢
urllib: kodowanie parametrów, pobieranie wprost do pliku
urllib2: obsªuga otwieraczy
@zsiciarz
requests, czyli HTTP dla ludzi
![Page 8: requests, czyli HTTP dla ludzi](https://reader031.vdocuments.mx/reader031/viewer/2022020122/5500141b4a7959e6728b5031/html5/thumbnails/8.jpg)
httplib urllib(2) requests na ratunek
urllib/urllib2
obie biblioteki w stdlib
ró»na funkcjonalno±¢
urllib: kodowanie parametrów, pobieranie wprost do pliku
urllib2: obsªuga otwieraczy
@zsiciarz
requests, czyli HTTP dla ludzi
![Page 9: requests, czyli HTTP dla ludzi](https://reader031.vdocuments.mx/reader031/viewer/2022020122/5500141b4a7959e6728b5031/html5/thumbnails/9.jpg)
httplib urllib(2) requests na ratunek
urllib2 - Basic Auth
import urllib2
url = ’http :// httpbin.org/basic -auth/user/pass’user = ’user’password = ’pass’req = urllib2.Request(url)
pwd_manager = urllib2.HTTPPasswordMgrWithDefaultRealm ()pwd_manager.add_password(None , url , user , password)auth_manager = urllib2.HTTPBasicAuthHandler(pwd_manager)opener = urllib2.build_opener(auth_manager)urllib2.install_opener(opener)
response = urllib2.urlopen(req)print response.getcode ()print response.headers.getheader(’content -type’)print response.read()
O RLY?
@zsiciarz
requests, czyli HTTP dla ludzi
![Page 10: requests, czyli HTTP dla ludzi](https://reader031.vdocuments.mx/reader031/viewer/2022020122/5500141b4a7959e6728b5031/html5/thumbnails/10.jpg)
httplib urllib(2) requests na ratunek
urllib2 - Basic Auth
import urllib2
url = ’http :// httpbin.org/basic -auth/user/pass’user = ’user’password = ’pass’req = urllib2.Request(url)
pwd_manager = urllib2.HTTPPasswordMgrWithDefaultRealm ()pwd_manager.add_password(None , url , user , password)auth_manager = urllib2.HTTPBasicAuthHandler(pwd_manager)opener = urllib2.build_opener(auth_manager)urllib2.install_opener(opener)
response = urllib2.urlopen(req)print response.getcode ()print response.headers.getheader(’content -type’)print response.read()
O RLY?@zsiciarz
requests, czyli HTTP dla ludzi
![Page 11: requests, czyli HTTP dla ludzi](https://reader031.vdocuments.mx/reader031/viewer/2022020122/5500141b4a7959e6728b5031/html5/thumbnails/11.jpg)
httplib urllib(2) requests na ratunek
requests
http://python-requests.org/
Requests: Python HTTP Module (That Doesn't Suck)
@zsiciarz
requests, czyli HTTP dla ludzi
![Page 12: requests, czyli HTTP dla ludzi](https://reader031.vdocuments.mx/reader031/viewer/2022020122/5500141b4a7959e6728b5031/html5/thumbnails/12.jpg)
httplib urllib(2) requests na ratunek
requests
http://python-requests.org/
Requests: Python HTTP Module (That Doesn't Suck)
Requests: The Simple (e.g. usable) HTTP Module
@zsiciarz
requests, czyli HTTP dla ludzi
![Page 13: requests, czyli HTTP dla ludzi](https://reader031.vdocuments.mx/reader031/viewer/2022020122/5500141b4a7959e6728b5031/html5/thumbnails/13.jpg)
httplib urllib(2) requests na ratunek
requests
http://python-requests.org/
Requests: Python HTTP Module (That Doesn't Suck)
Requests: The Simple (e.g. usable) HTTP Module
Requests: HTTP for Humans
@zsiciarz
requests, czyli HTTP dla ludzi
![Page 14: requests, czyli HTTP dla ludzi](https://reader031.vdocuments.mx/reader031/viewer/2022020122/5500141b4a7959e6728b5031/html5/thumbnails/14.jpg)
httplib urllib(2) requests na ratunek
requests - API
requests.get(...)
requests.post
requests.put
requests.delete
requests.patch
requests.options
requests.head
@zsiciarz
requests, czyli HTTP dla ludzi
![Page 15: requests, czyli HTTP dla ludzi](https://reader031.vdocuments.mx/reader031/viewer/2022020122/5500141b4a7959e6728b5031/html5/thumbnails/15.jpg)
httplib urllib(2) requests na ratunek
requests - API
requests.get(...)
requests.post
requests.put
requests.delete
requests.patch
requests.options
requests.head
@zsiciarz
requests, czyli HTTP dla ludzi
![Page 16: requests, czyli HTTP dla ludzi](https://reader031.vdocuments.mx/reader031/viewer/2022020122/5500141b4a7959e6728b5031/html5/thumbnails/16.jpg)
httplib urllib(2) requests na ratunek
requests - API
requests.get(...)
requests.post
requests.put
requests.delete
requests.patch
requests.options
requests.head
@zsiciarz
requests, czyli HTTP dla ludzi
![Page 17: requests, czyli HTTP dla ludzi](https://reader031.vdocuments.mx/reader031/viewer/2022020122/5500141b4a7959e6728b5031/html5/thumbnails/17.jpg)
httplib urllib(2) requests na ratunek
requests - API
requests.get(...)
requests.post
requests.put
requests.delete
requests.patch
requests.options
requests.head
@zsiciarz
requests, czyli HTTP dla ludzi
![Page 18: requests, czyli HTTP dla ludzi](https://reader031.vdocuments.mx/reader031/viewer/2022020122/5500141b4a7959e6728b5031/html5/thumbnails/18.jpg)
httplib urllib(2) requests na ratunek
requests - API
requests.get(...)
requests.post
requests.put
requests.delete
requests.patch
requests.options
requests.head
@zsiciarz
requests, czyli HTTP dla ludzi
![Page 19: requests, czyli HTTP dla ludzi](https://reader031.vdocuments.mx/reader031/viewer/2022020122/5500141b4a7959e6728b5031/html5/thumbnails/19.jpg)
httplib urllib(2) requests na ratunek
requests - API
requests.get(...)
requests.post
requests.put
requests.delete
requests.patch
requests.options
requests.head
@zsiciarz
requests, czyli HTTP dla ludzi
![Page 20: requests, czyli HTTP dla ludzi](https://reader031.vdocuments.mx/reader031/viewer/2022020122/5500141b4a7959e6728b5031/html5/thumbnails/20.jpg)
httplib urllib(2) requests na ratunek
requests - API
requests.get(...)
requests.post
requests.put
requests.delete
requests.patch
requests.options
requests.head
@zsiciarz
requests, czyli HTTP dla ludzi
![Page 21: requests, czyli HTTP dla ludzi](https://reader031.vdocuments.mx/reader031/viewer/2022020122/5500141b4a7959e6728b5031/html5/thumbnails/21.jpg)
httplib urllib(2) requests na ratunek
requests - proste »¡danie GET
import requests
response = requests.get(’http :// httpbin.org/status /418’)
print response.status_codeprint response.content
@zsiciarz
requests, czyli HTTP dla ludzi
![Page 22: requests, czyli HTTP dla ludzi](https://reader031.vdocuments.mx/reader031/viewer/2022020122/5500141b4a7959e6728b5031/html5/thumbnails/22.jpg)
httplib urllib(2) requests na ratunek
requests - Basic Auth
import requests
url = ’http :// httpbin.org/basic -auth/user/pass’response = requests.get(url , auth=(’user’, ’pass’))
print response.status_codeprint response.headers[’content -type’]print response.content
@zsiciarz
requests, czyli HTTP dla ludzi
![Page 23: requests, czyli HTTP dla ludzi](https://reader031.vdocuments.mx/reader031/viewer/2022020122/5500141b4a7959e6728b5031/html5/thumbnails/23.jpg)
httplib urllib(2) requests na ratunek
requests - Basic Auth
zbyszek@wicherek :~/ Dokumenty/requests$ python code/requests_2.py200application/json{
"authenticated": true ,"user": "user"
}
@zsiciarz
requests, czyli HTTP dla ludzi
![Page 24: requests, czyli HTTP dla ludzi](https://reader031.vdocuments.mx/reader031/viewer/2022020122/5500141b4a7959e6728b5031/html5/thumbnails/24.jpg)
httplib urllib(2) requests na ratunek
requests - POST i upload pliku
import requests
data = dict(username=’’)with open(__file__) as f:
response = requests.post(’http :// httpbin.org/post’,data=data , files={’filename ’: f})
print response.status_codeprint response.content
@zsiciarz
requests, czyli HTTP dla ludzi
![Page 25: requests, czyli HTTP dla ludzi](https://reader031.vdocuments.mx/reader031/viewer/2022020122/5500141b4a7959e6728b5031/html5/thumbnails/25.jpg)
httplib urllib(2) requests na ratunek
requests - POST i upload pliku
zbyszek@wicherek :~/ Dokumenty/requests$ python code/requests_3.py200{
"origin": "::ffff :184.73.223.212","files": {
"filename": "import requests\n\n<CIACH >"},"form": null ,"url": "http :// httpbin.org/post","args": {},"headers": {
"Content -Length": "555",<CIACH >"Content -Type": "multipart/form -data; boundary =3298
fc5c93854f96b712fa4708e4cdef"},"data": "username"
}
@zsiciarz
requests, czyli HTTP dla ludzi
![Page 26: requests, czyli HTTP dla ludzi](https://reader031.vdocuments.mx/reader031/viewer/2022020122/5500141b4a7959e6728b5031/html5/thumbnails/26.jpg)
httplib urllib(2) requests na ratunek
Alternatywy
PyCURL wrapper na libcurl
Mechanize klient to "przegl¡darka"
@zsiciarz
requests, czyli HTTP dla ludzi
![Page 27: requests, czyli HTTP dla ludzi](https://reader031.vdocuments.mx/reader031/viewer/2022020122/5500141b4a7959e6728b5031/html5/thumbnails/27.jpg)
httplib urllib(2) requests na ratunek
Alternatywy
PyCURL wrapper na libcurl
Mechanize klient to "przegl¡darka"
@zsiciarz
requests, czyli HTTP dla ludzi
![Page 28: requests, czyli HTTP dla ludzi](https://reader031.vdocuments.mx/reader031/viewer/2022020122/5500141b4a7959e6728b5031/html5/thumbnails/28.jpg)
httplib urllib(2) requests na ratunek
The End
Pytania?
http://siciarz.net@zsiciarz
@zsiciarz
requests, czyli HTTP dla ludzi