Thứ Hai, 27 tháng 1, 2014

lib requests

Module chuẩn urllib2 cung cấp hầu hết các tính năng HTTP bạn cần. nó được xây dựng cho một thời gian khác nhau và một trang web khác nhau. Nó yêu cầu một lượng khá lớn các công việc giúp thực hiện tasks một cách đơn giản nhất

Make a requests:

>>> r = requests.get('https://github.com/timeline.json')

+make a request to github's pubblic timelime. make a Response obj and you can get all the imfomation you need from that obj
Requests’ simple API nghĩa là tất cả các hình thức rõ ràng của HTTP requests như Get, post, put, delete, head hoặc options..

Thông qua các tham số của URL :
ví dụ:
>>> value = { 'value1':'thanh', 'value2': hiep'}
>>>r = requests.get("http://httpbin.org/get, params = value)

>>>print(r.url)
http://httpbin.org/get?value2=hiep&value1=thanh

khi bạn muốn gửi một số loại data lên chuỗi nghi vấn của url , khi bạn xây dựng URL bằng tay thì data sẽ hiện ra dưới dạng cặp key:value đằng sau một dấu hỏi

Nội dung Response:
>>> import requests
>>> r = requests.get('https://github.com/timeline.json')
>>> r.text
u'[{"repository":{"open_issues":0,"url":"https://github.com/...

 code trên giúp bạn đọc được nội dung của server's response, dưới dạng json.
Requests sẽ tự động giải mã nọi dung từ máy chủ.
+dùng r.encoding để tìm ra những gì yêu cầu mã hoá sử dụng hoặc thay đổi nó để cho phép bạn sử dụng r.text với mã hóa chính xác

>>> r.encoding
'utf-8'
>>> r.encoding = 'ISO-8859-1'


JSON Response Content

 Có một bộ mã hóa Json dựng sẵn khi bạn làm việc với json data

>>> import requests
>>> r = requests.get('https://github.com/timeline.json')
>>> r.json()
[{u'repository': {u'open_issues': 0, u'url': 'https://github.com/...

Tùy chỉnh tiêu đề:
>>> import json
>>> url = 'https://api.github.com/some/endpoint'
>>> payload = {'some': 'data'}
>>> headers = {'content-type': 'application/json'}

>>> r = requests.post(url, data=json.dumps(payload), headers=headers)

Post file:

>>> url = 'http://httpbin.org/post'
>>> files = {'file': open('report.xls', 'rb')}

>>> r = requests.post(url, files=files)
>>> r.text
{
  ...
  "files": {
    "file": "<censored...binary...data>"
  },
  ...
}

sẽ post lên trang web URL đó nội dung như trong file "report.xls' được mở

Có thểđịnh rõ thêm tên file post:
>>> files = {'file':('report.xls', open('report.xls', 'rb'))

hoặc post lên một string hay một data trực tiếp:
>>> files = {'file': ('report.csv', 'some,data,to,send\nanother,row,to,send\n')}




Có thể kiểm tra Response status codes:
'r.status_code'


>>> r.headers 
dùng để xem server's response headers

Một số Requests có tính năng tiên tiến hơn:

+session  obj: cho phép bạn đua ra các tham số ngay trên yêu cầu. ví dụ:
s = requests.Session()

s.get('http://httpbin.org/cookies/set/sessioncookie/123456789')
r = s.get("http://httpbin.org/cookies")

print(r.text)
# '{"cookies": {"sessioncookie": "123456789"}}'

Một Session obj có chứa tất cả các phương thức của một API requests chính


Requests.get() làm hai việc:
+tạo ra một requests obj sẽ gửi tới máy chủ yêu cầu hoặc truy vấn tài nguyên
+Một response sẽ được tạo ra, chứa tất cả những thông tin trả về từ máy chủ và chứa requests obj bạn đã tạo ra
Ví dụ: để đưa ra những thông tin cực kì quan trong từ một máy chủ
>>> r = requests.get('http://en.wikipedia.org/wiki/Monty_Python')

r.headers: giúp bạn truy cập các tiêu đề gửi về từ máy chủ
r.requests.headers() giúp chúng ta nhận được các tiêu đề chúng ta đã gửi tới máy chủ


Session obj:
Session obj cho phép bạn duy trì các requests thông qua các tham số trực tiếp.Nó cũng duy trì các cookies thông qua tất cả các requests được tạo từ Session intances









5 nhận xét:

  1. > nó được xây dựng cho một thời gian khác nhau và một trang web khác nhau

    tối nghĩa. "1 thời gian khác nhau" => WTF????

    > Nó yêu cầu một lượng khá lớn các công việc giúp thực hiện tasks một cách đơn giản nhất

    task gì? cụ thể ra ! (tạo HTTP request ...)

    Không giới thiệu link đến homepage hay cũng không hướng dẫn cách cài thì ai biết requests là cái gì?

    Trả lờiXóa
  2. >khi bạn muốn gửi một số loại data lên chuỗi nghi vấn của url

    chuỗi nghi vấn là cái gì? ăn được không ???

    Trả lờiXóa
  3. > Có một bộ mã hóa Json dựng sẵn khi bạn làm việc với json data

    => có sẵn method để convert output ra dạng JSON?

    Trả lờiXóa
  4. > Tùy chỉnh tiêu đề:

    tiêu đề là gì, ăn được không ?

    Trả lờiXóa
  5. mô tả session 1 cách lơ mơ, chứng tỏ không hiểu gì.

    Trả lờiXóa