Con trăn cookiejar

Mặc dù vậy, Python cũng hỗ trợ chúng ta làm việc với các yêu cầu HTTP thông qua mô-đun urllib2. Nhưng nó khá là lằng nhằng và rắc rối. Chúng ta thử xem qua 2 ví dụ dưới đây để biết rõ hơn nhé

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import urllib2

gh_url = '//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['//api.github.com', auth=['user', 'pass']]

print r.status_code
print r.headers['content-type']

# ------
# 200
# 'application/json'

Ở 02 ví dụ trên đều gọi tới API của Github với thông tin tên người dùng và mật khẩu. Và bạn cũng đã thấy, ở ví dụ 2 chúng ta sẽ phải viết mã ít hơn, dễ hiểu hơn và nhớ hơn, đúng không ạ

? .
!

Cài đặt

Trước tiên, chúng tôi có thể kiểm tra xem trên máy của mình đã cài đặt mô-đun này chưa hoặc nếu đã cài đặt rồi, chúng tôi sẽ xem mình đang ở phiên bản mới nhất chưa bằng 1 đoạn mã rút ngắn trên thiết bị đầu cuối như sau

python -c "import requests; print[requests.__version__];"

Sau khi thử đoạn mã trên, nếu máy bạn đã cài đặt rồi thì nó sẽ xuất hiện phiên bản của yêu cầu mô-đun. Còn lại thì không, bạn sẽ nhận được một lỗi như sau

Traceback [most recent call last]:
  File "", line 1, in 
ImportError: No module named requests

Nếu chưa cài đặt, bạn có thể cài đặt mô-đun này bằng 2 cách là thông qua pip hoặc easy_install

# Easy install
easy_install requests
# PIP
pip install requests

Hoặc nếu đã cài đặt rồi mà chưa phải là phiên bản mới nhất [phiên bản 2. 9. 1], bạn có thể cập nhật bằng 2 cách sau, cũng như thông qua PIP hoặc easy_install

# Easy install
easy_install -U requests

# PIP
pip install -U requests

This is the install is done, to ensure that, you please run back the side on to check check the setting that it is a true public is not nhé

. Sang phần tiếp theo, mình sẽ giới thiệu về các tính năng được module hỗ trợ yêu cầu.

Các tính năng

  • Tên miền và URL quốc tế
  • Keep-Alive & Kết nối tổng hợp
  • Các phiên có tính ổn định của cookie
  • Xác minh SSL kiểu trình duyệt
  • Xác thực cơ bản/tiêu hóa
  • Cookie khóa/giá trị thanh lịch
  • Giải nén tự động
  • Giải mã nội dung tự động
  • Cơ quan phản hồi Unicode
  • Tải lên tệp nhiều phần
  • Hỗ trợ ủy quyền HTTP[S]
  • Thời gian chờ kết nối
  • Tải xuống trực tuyến
  • Traceback [most recent call last]:
      File "", line 1, in 
    ImportError: No module named requests
    
    6 Hỗ trợ
  • yêu cầu chunked
  • An toàn chủ đề

Yêu cầu làm việc tốt với 2 phiên bản của Python là 2. 6, 3. 5 và PyPy. Tiếp theo, chúng ta sẽ thử làm việc với mô-đun này bằng cách tạo một vài yêu cầu đơn giản nhé

Thực hiện yêu cầu đầu tiên của bạn

Hãy thử xem, bạn có thể tạo 1 tệp có phần mở rộng là

Traceback [most recent call last]:
  File "", line 1, in 
ImportError: No module named requests
7 hoặc thực hiện luôn trên thiết bị đầu cuối với trình thông dịch Python. Mình sẽ chọn cách 2 là sử dụng trình thông dịch Python để tiện
. Để sử dụng trình thông dịch Python, bạn chỉ cần đơn giản là nhập
Traceback [most recent call last]:
  File "", line 1, in 
ImportError: No module named requests
8 [mặc định là sẽ sử dụng Python 2] hoặc
Traceback [most recent call last]:
  File "", line 1, in 
ImportError: No module named requests
9 [cho phiên bản Python 3] trên thiết bị đầu cuối là có thể sử dụng. Chúng ta thử một yêu cầu đơn giản là lấy các sự kiện mới nhất trên Github [bao gồm các sự kiện như đẩy, hợp nhất, tạo,. - đối với các kho lưu trữ công cộng].

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import requests

r = requests.get['//api.github.com', auth=['user', 'pass']]

print r.status_code
print r.headers['content-type']

# ------
# 200
# 'application/json'
0

Vì vậy, chúng ta đã có một đối tượng phản hồi mà Github API trả về là một JSON, bạn có thể lấy và làm việc luôn với đối tượng JSON của phản hồi như sau [kết quả tùy thuộc vào mỗi người và mỗi khoảng thời gian chúng ta gọi API

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import requests

r = requests.get['//api.github.com', auth=['user', 'pass']]

print r.status_code
print r.headers['content-type']

# ------
# 200
# 'application/json'
1

Ví dụ trên là phương thức GET, vậy còn các phương thức khác như POST, PUT, DELETE,. thì sao?

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import requests

r = requests.get['//api.github.com', auth=['user', 'pass']]

print r.status_code
print r.headers['content-type']

# ------
# 200
# 'application/json'
2

Và các yêu cầu cũng hỗ trợ bạn có thể viết như sau

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import requests

r = requests.get['//api.github.com', auth=['user', 'pass']]

print r.status_code
print r.headers['content-type']

# ------
# 200
# 'application/json'
3

Truyền tham số trong URL

Bạn muốn sử dụng chuỗi truy vấn trong URL. You can like after

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import requests

r = requests.get['//api.github.com', auth=['user', 'pass']]

print r.status_code
print r.headers['content-type']

# ------
# 200
# 'application/json'
0

POST một tệp được mã hóa nhiều phần

  • Tập tin nhị phân
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import requests

r = requests.get['//api.github.com', auth=['user', 'pass']]

print r.status_code
print r.headers['content-type']

# ------
# 200
# 'application/json'
1
  • tệp chuỗi
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import requests

r = requests.get['//api.github.com', auth=['user', 'pass']]

print r.status_code
print r.headers['content-type']

# ------
# 200
# 'application/json'
2

Mã trạng thái phản hồi

Bạn muốn kiểm tra mã trạng thái của một yêu cầu trước khi thực hiện các nhiệm vụ tiếp theo?

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import requests

r = requests.get['//api.github.com', auth=['user', 'pass']]

print r.status_code
print r.headers['content-type']

# ------
# 200
# 'application/json'
3

Và các yêu cầu mô-đun cũng hỗ trợ chúng tôi lập một danh sách các mã trạng thái để bạn có thể kiểm tra

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import requests

r = requests.get['//api.github.com', auth=['user', 'pass']]

print r.status_code
print r.headers['content-type']

# ------
# 200
# 'application/json'
4

Để xem đầy đủ danh sách các mã trạng thái của yêu cầu, bạn có thể sử dụng một trong hai lệnh sau

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import requests

r = requests.get['//api.github.com', auth=['user', 'pass']]

print r.status_code
print r.headers['content-type']

# ------
# 200
# 'application/json'
5

Tiêu đề phản hồi

Chúng ta cũng có thể xem các tiêu đề mà máy chủ trả về cho chúng ta bằng cách sau

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import requests

r = requests.get['//api.github.com', auth=['user', 'pass']]

print r.status_code
print r.headers['content-type']

# ------
# 200
# 'application/json'
6

Cá nhân mình khuyến nghị bạn nên sử dụng

# Easy install
easy_install requests
# PIP
pip install requests
0 để chắc chắn, tránh các ngoại lệ có thể xảy ra nếu khóa mà bạn muốn lấy không có trong tiêu đề trả về. Vì hàm
# Easy install
easy_install requests
# PIP
pip install requests
1 sẽ trả về kiểu dữ liệu là
# Easy install
easy_install requests
# PIP
pip install requests
2 nếu khóa đó không tồn tại

Chủ Đề