Giới thiệu
Requests là một mô-đun Python sử dụng để gửi tất cả các loại yêu cầu HTTP. Đây là một thư viện dễ sử dụng với nhiều tính năng khác nhau, từ việc truyền các tham số trong URL cho đến gửi các header tùy biến và Xác minh SSL.
Về cơ bản nó sử dụng để gửi yêu cầu HTTP qua các dịch vụ web API. Thư viện requests không đi kèm với thư viện tiêu chuẩn của python, bạn có thể cài đặt nó bằng lệnh pip.
Trước khi học về request, bạn nên có các kiến thức về HTTP Request.
pip install requests
Cách sử dụng
Rất dễ để gửi một yêu cầu HTTP bằng requests. Bạn bắt đầu bằng cách import module và sau đó thực hiện yêu cầu.
Trước tiên, hãy chỉ định loại yêu cầu bạn đang thực hiện (POST, GET, PUT, DELETE) và URL mà bạn đang gửi yêu cầu kèm với các thông số bổ sung tùy thuộc vào loại yêu cầu.
Cú pháp:
requests.method(params)
Các method như:
- get(url, params, args)
- post(url, data, json, args)
- put(url, data, args)
- delete(url, args)
- head(url, args)
- patch(url, data, args)
- request(method, url, args)
Ví dụ: Ở đây mình tạo 1 request với method GET và in ra thuộc tính text (in thông tin phản hồi).
import requests
req = requests.get('https://github.com/')
print(req.text)
Tất cả các thông tin về yêu cầu của chúng ta bây giờ được lưu trữ trong một đối tượng phản hồi được gọi là req. Bạn có thể sử dụng các thuộc tính như sau:
- close(): Đóng kết nối với máy chủ
- content: Trả về nội dung của phản hồi
- cookies: Trả về một đối tượng chứa các cookie được gửi lại từ máy chủ
- elapsed: Trả về một đối tượng thời gian từ khi gửi yêu cầu đến khi phản hồi đến
- encoding: Trả về mã hóa được sử dụng
- headers: Trả về từ điển các tiêu đề phản hồi
- history: Trả về danh sách các đối tượng phản hồi có lịch sử yêu cầu (url)
- is_permanent_redirect: Kiểm tra phản hồi là url được chuyển hướng vĩnh viễn
- is_redirect: Kiểm tra phản hồi là url được chuyển hướng
- iter_content(): Lặp lại phản hồi
- iter_lines(): Lặp lại các dòng của phản hồi
- json(): Trả về một đối tượng JSON của kết quả
- links: Trả về các liên kết tiêu đề
- next:Trả về một đối tượng cho yêu cầu tiếp theo trong chuyển hướng
- ok: Kiểm tra phản hồi thành công
- reason: Trả về văn bản mã trạng thái (OK, Not found, …)
- request: Trả về đối tượng yêu cầu đã yêu cầu phản hồi này
- status_code: Trả về sô mã trạng thái (200, 404, …)
- text: Trả về nội dung của phản hồi
- url: Trả về URL của phản hồi
Ví dụ:
import requests
req = requests.get('http://www.facebook.com/')
print(req.encoding)
print(req.status_code)
print(req.elapsed)
print(req.url)
print(req.reason)
print(req.history)
print(req.headers['Content-Type'])
- mã hoá: utf-8
- mã trạng thái: 200
- thời gian phản hồi: 0:00:00.411841
- https://www.facebook.com/
- trạng thái: OK
- lịch sử yêu cầu: [<Response [301]>]
- loại nội dung: text/html; charset=”utf-8″
Tạo một Yêu cầu POST
Tạo một yêu cầu POST cũng tương tự như yêu cầu GET. Bạn chỉ cần sử dụng hàm post() và truyền dữ liệu cần gửi.
Ví dụ:
import requests
url = 'https://testdomain.com/demo.php'
postdata = {'key': 'testvalue'}
x = requests.post(url, data = postdata)
Gửi Cookie và Header
Như đã đề cập ở trên, bạn có thể truy cập các cookie và header mà máy chủ phản hồi bằng req.cookies và req.headers. Nó cũng cho phép bạn gửi các cookie và header tùy biến. Điều này có thể hữu ích khi bạn muốn, giả sử thiết lập một user agent tùy biến cho yêu cầu của bạn.
import requests
url = 'https://testdomain.com/set/'
headers = {'user-agent': 'your-own-user-agent/0.0.1'}
cookies = {'visit-month': 'February'}
req = requests.get(url, headers=headers, cookies=cookies)