requests, czyli HTTP dla ludzi

28

description

PyWaw 11 lipca 2011

Transcript of requests, czyli HTTP dla ludzi

Page 1: requests, czyli HTTP dla ludzi

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

httplib urllib(2) requests na ratunek

The End

Pytania?

http://siciarz.net@zsiciarz

@zsiciarz

requests, czyli HTTP dla ludzi