Tìm hiểu về modules requests trong lập trình Python
11:33 PM
Add Comment
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 requestspython 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)
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ộtDictionary
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ộtDictionary
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ộtDictionary
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ộtDictionary
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ộttuple
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ộtfloat
hoặctubple
đơ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ộtbool
thiết lập xem request này có cho phép redirect không, mặc định thì giá trị này bằngTrue
có nghĩa là cho phép. Tham số này có thể bỏ trống.proxies
là mộtDictionary
chứa các protocol để ánh xạ đến proxy của URL. Tham số này có thể bỏ trống.verify
là mộtbool
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ộtbool
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ácTooManyRedirects
- 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é !