HuuTuan .Info

Chia sẻ ATTT - CNTT - Đồ họa

Tìm hiểu về modules requests trong lập trình Python

1. Requests Resource là gì?

Requests là một thư viện HTTP được cấp phép Apache2, được viết bằng Python. Nó được thiết kế để để người dùng tương tác với ngôn ngữ. Điều này có nghĩa là bạn không cần phải thêm các chuỗi truy vấn vào URL theo cách thủ công hoặc mã hóa dữ liệu POST của bạn.


2. Requests có thể làm những gì?


Requests sẽ cho phép bạn gửi requests HTTP / 1.1 bằng Python. Với nó, bạn có thể thêm nội dung như url, cookies, tệp nhiều phần và tham số thông qua các thư viện Python đơn giản. Nó cũng cho phép ta xem được phản hồi của Python theo cách tương tự.

Thư viện rất quan trọng, và được dùng khá nhiều trong lập trình python, mình thường hay viết các công cụ khai thác lỗ hổng website, hệ thống bằng thư viện này. Trong series tới mình sẽ hướng dẫn các bạn viết các công cụ khai thác bằng python.


3. Cách cài đặt


- Ta có thể sử dụng module requests trong cả python 2 và python 3.

- Trên Linux bạn có thể dùng câu lệnh sau:

python 2:  pip install requests
python 3: pip3 install requests


- Trên windows bạn dùng cách sau:

( nếu bạn cài 1 phiên bản thì chỉ cần dùng python -m pip install requests)
python 2: python -m pip install requests
python 3: python3 -m pip install requests


- Trên phần mềm Pycharm:

Các bạn có thể làm theo các bước sau:





4. Cách sử dụng

Ta tiến hành import thư viện vào python nếu thành công sẽ không có thông báo lỗi nào.

import requests

Tiếp đến là tạo thử một requests xem sao:
requests.method(url, params, data, json, headers, cookies, files,
auth, timeout, allow_redirects, proxies, verify, stream, cert) # hoặc requests.Request(method, url, params, data, json, headers, cookies, files,
auth, timeout, allow_redirects, proxies, verify, stream, cert)


Trong đó:
  • method sẽ là phương thức HTTP request mà bạn muốn tạo, các phương thức này có thể là: GET, POST,  PUT, PATCH, DELETE và OPTIONS.
  • url là String chứa URL của trang web mà bạn muốn gửi request đến.
  • data là một Dictionary hoặc list of tuples hoặc bytes và bạn muốn gửi kèm trong body của request. Tham số này có thể bỏ trống.
  • json tương tự như data, nhưng kiểu dữ liệu là JSON serializable Python object. Tham số này có thể bỏ trống.
  • headers là một Dictionary chứa các HTTP header mà bạn muốn gửi kèm request. Tham số này có thể bỏ trống.
  • cookies là một Dictionary hoặc CookieJar Object chứa các cookie mà bạn muốn gửi kèm request. Tham số này có thể bỏ trống.
  • files là một Dictionary chứa các files object (file object là result của hàm open()) mà bạn muốn gửi kèm request. Tham số này có thể bỏ trống.
  • auth là một tuple chứa username, password của trang web mà bạn muốn gửi request đến nếu như trang web đó được bảo mật bởi Basic/Digest/Custom authentic. Tham số này có thể bỏ trống.
  • timeout là một float hoặc tubple đơn vị tính bằng giây thiết lập request có thể chờ tối đa là bao nhiêu giây. Tham số này có thể bỏ trống.
  • allow_redirects là một bool thiết lập xem request này có cho phép redirect không, mặc định thì giá trị này bằng True có nghĩa là cho phép. Tham số này có thể bỏ trống.
  • proxies là một Dictionary chứa các protocol để ánh xạ đến proxy của URL. Tham số này có thể bỏ trống.
  • verify  là một bool cấu hình xem có cho phép xác thực TLS hay không, mặc định là True. Tham số này có thể bỏ trống.
  • stream là một bool cấu hình xem dữ liệu trả về có Stream hay không. Tham số này có thể bỏ trống.
  • cert là một String chứa đường dẫn đến ssl client file (.pem). Tham số này có thể bỏ trống.
 Phương thức này sẽ trả về một Response Object.
VD:
  • Gửi một get request đến Toidicode.com:
import requests

requests.get("https://www.huutuan.info/")

# https://toidicode.com/
  • Gửi một GET request kèm param:
import requests

requests.get("https://www.huutuan.info/", params= {"post_id": 135})
# hoặc
requests.get("https://www.huutuan.info/?post_id=135")

#request: https://toidicode.com/?post_id=135
  • Gửi một POST data request kèm se timeout là 3s:
import requests

requests.post("https://www.huutuan.info/", data={"post_id": 135}, timeout=3)
  • Tạo một POST request upload file lên server:
import requests

requests.post("https://www.huutuan.info/", files={'image': open('images/logo.png')})

Dữ liệu trả về - Response

Khi tạo request thành công thì dữ liệu trả về sẽ là một Object chứa các thuộc tính và phương thức với chức năng như sau:

import requests

r = requests.get("http://ip-api.com/json")

#request: https://toidicode.com/?post_id=135

print(r.apparent_encoding)
# print(r.content)
print(r.encoding)
print(r.cookies)
print(r.elapsed)
print(r.encoding)
print(r.headers)
print(r.history)
print(r.is_permanent_redirect)
print(r.iter_content())
print(r.links)
print(r.raise_for_status())
print(r.json())
Kết quả trả về
ascii
utf-8

0:00:00.165961
utf-8
{'Content-Length': '271', 'Date': 'Mon, 17 Sep 2018 01:33:24 GMT', 'Content-Type': 'application/json; charset=utf-8', 'Access-Control-Allow-Origin': '*'}
[]
False

{}
None
{'as': 'AS7552 Viettel Group', 'zip': '', 'regionName': 'Hanoi', 'lat': 21.0333, 'country': 'Vietnam', 'status': 'success', 'timezone': 'Asia/Ho_Chi_Minh', 'lon': 105.85, 'countryCode': 'VN', 'org': 'Viettel Group', 'city': 'Hanoi', 'isp': 'Viettel Group', 'region': 'HN', 'query': '117.4.242.101'}

Các excetion có thể xảy ra.

RequestException - Có một lỗi gì đó xảy ra trong quá  trình thực thi request của bạn.
ConnectionError - Kết nối xảy ra lỗi.
HTTPError - Có lỗi HTTP xảy ra.
URLRequired -  URL của bạn không chính xác
TooManyRedirects - Request redirect quá nhiều lần.
ConnectTimeout - Kết nỗi bị timeout.
ReadTimeout - Server không trả về dữ liệu trì trong khoảng thời gian được phân bổ.
Timeout - Request bị timeout (Nên dùng exception này để bắt cả ConectionTimeout và ReadTimeout nếu bạn muốn code ngắn gọn).

0 Response to "Tìm hiểu về modules requests trong lập trình Python"

Post a Comment

Nội Quy Khi Comment:
» Các bài comment phải nghiêm túc, không dung tục, không spam.
» Nội dung phải liên quan tới chủ đề bài viết.
» Những nhận xét spam sẽ bị xóa.
» Sử dụng tài khoản Google để được trợ giúp.
» Nặc danh thường không được chào đón.
Note : Hãy để lại nhận xét bên dưới bạn nhé !

Quảng Cáo TOP

Quảng Cáo TOP 1

Quảng Cáo TOP 2

Quảng Cáo TOP