Tiêu đề trong yêu cầu Python là gì?

Trong bài đăng này về Hướng dẫn yêu cầu Python, tôi sẽ giải thích cho bạn tất cả những điều cơ bản về Mô-đun yêu cầu và cách bạn có thể gửi HTTP/1. 1 yêu cầu sử dụng Python. Đến cuối blog này, bạn sẽ có thể thực hiện quét web bằng Python. Tôi sẽ đề cập đến các chủ đề sau trong bài đăng này

Chúng ta hãy bắt đầu blog “Hướng dẫn về Yêu cầu” này bằng cách xem trước Mô-đun Yêu cầu thực sự là gì

Yêu cầu Python là gì?

Yêu cầu là một mô-đun Python mà bạn có thể 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ừ truyền tham số trong URL đến gửi tiêu đề tùy chỉnh và Xác minh SSL. Trong hướng dẫn này, bạn sẽ học cách sử dụng thư viện này để gửi các yêu cầu HTTP đơn giản bằng Python

Yêu cầu cho phép bạn gửi HTTP/1. 1 yêu cầu. Bạn có thể thêm tiêu đề, dữ liệu biểu mẫu, tệp nhiều phần và tham số bằng từ điển Python đơn giản và truy cập dữ liệu phản hồi theo cách tương tự

Làm cách nào để bạn cài đặt Mô-đun yêu cầu trong Python?

Để cài đặt yêu cầu, chỉ cần

$ pip install requests

Hoặc, nếu bạn hoàn toàn phải

$ easy_install requests

Làm thế nào để thực hiện một yêu cầu GET?

Việc gửi yêu cầu HTTP bằng cách sử dụng Yêu cầu khá đơn giản. Bạn bắt đầu bằng cách nhập mô-đun và sau đó thực hiện yêu cầu. Kiểm tra ví dụ

import requests
req = requests.get['//www.edureka.co/']

Vì vậy, chúng tôi đang lưu trữ thông tin ở đâu đó, đúng không?

Có, đối tượng Response lưu trữ thông tin

Ví dụ: giả sử bạn muốn mã hóa một trang web để bạn có thể xác minh hoặc sử dụng nó ở một nơi khác. Chúng ta có thể làm điều này bằng cách sử dụng yêu cầu. mã hóa cả thuộc tính

Một điểm cộng nữa là bạn cũng có thể trích xuất nhiều tính năng như mã trạng thái chẳng hạn [của yêu cầu]. Điều này có thể được thực hiện bằng cách sử dụng req. thuộc tính status_code

req.encoding # returns 'utf-8'
req.status_code # returns 200

Chúng tôi cũng có thể truy cập các cookie mà máy chủ đã gửi lại. Điều này được thực hiện bằng cách sử dụng req. cookie, đơn giản như vậy. Tương tự, bạn cũng có thể lấy tiêu đề phản hồi. Điều này được thực hiện bằng cách sử dụng req. tiêu đề

Xin lưu ý rằng yêu cầu. headers sẽ trả về một từ điển phân biệt chữ hoa chữ thường của các tiêu đề phản hồi. Vì vậy, điều này có nghĩa là gì?

Điều này có nghĩa là yêu cầu. headers[‘Content-Length’], req. headers[‘content-length’] và req. tất cả các tiêu đề[‘CONTENT-LENGTH’] sẽ trả về giá trị của chỉ tiêu đề phản hồi ‘Content-Length’

Chúng tôi cũng có thể kiểm tra xem phản hồi nhận được có phải là chuyển hướng HTTP được định dạng tốt [hoặc không] có thể đã được xử lý tự động bằng cách sử dụng yêu cầu. thuộc tính is_redirect. Điều này sẽ trả về Đúng hoặc Sai dựa trên phản hồi thu được

Bạn cũng có thể lấy thời gian đã trôi qua giữa việc gửi yêu cầu và nhận lại phản hồi bằng thuộc tính khác. Hãy đoán? . tài sản đã qua

Bạn có nhớ URL mà ban đầu bạn đã chuyển đến hàm get[] không?

Và để xem URL phản hồi thực tế, bạn có thể sử dụng lệnh req. thuộc tính url

import requests
req = requests.get['//www.edureka.co/']

req.encoding # returns 'utf-8'
req.status_code # returns 200
req.elapsed # returns datetime.timedelta[0, 1, 666890]
req.url # returns '//edureka.co/'

req.history 

req.headers['Content-Type']
# returns 'text/html; charset=utf-8'

Bạn có nghĩ rằng nhận được tất cả thông tin này về trang web là tốt không?

Nếu nội dung bạn đang truy cập là văn bản, bạn luôn có thể sử dụng lệnh req. thuộc tính văn bản để truy cập nó. Xin lưu ý rằng nội dung sau đó chỉ được phân tích cú pháp dưới dạng unicode. Bạn có thể chuyển mã hóa này để giải mã văn bản này bằng lệnh req. mã hóa thuộc tính như chúng ta đã thảo luận trước đó

Trong trường hợp phản hồi không phải văn bản, bạn có thể truy cập chúng rất dễ dàng. Trên thực tế, nó được thực hiện ở định dạng nhị phân khi bạn sử dụng req. Nội dung. Mô-đun này sẽ tự động giải mã gzip và khử mã hóa chuyển cho chúng tôi. Điều này có thể rất hữu ích khi bạn đang xử lý trực tiếp các tệp phương tiện. Ngoài ra, bạn cũng có thể truy cập vào nội dung được mã hóa JSON của phản hồi, đó là nếu nó tồn tại, bằng cách sử dụng lệnh req. hàm json[]

Khá đơn giản và rất linh hoạt, phải không?

Ngoài ra, nếu cần, bạn cũng có thể nhận phản hồi thô từ máy chủ chỉ bằng cách sử dụng req. thô. Xin lưu ý rằng bạn sẽ phải chuyển stream=True trong yêu cầu để nhận phản hồi thô theo nhu cầu

Tuy nhiên, một số tệp bạn tải xuống từ internet bằng mô-đun Yêu cầu có thể có kích thước rất lớn, đúng không? . Tuy nhiên, bạn nên tải xuống tệp theo từng phần hoặc khối bằng phương pháp iter_content[chunk_size = 1, decode_unicode = False] .  

Vì vậy, phương thức này lặp lại dữ liệu phản hồi theo số byte chunk_size cùng một lúc. Và khi stream=True theo yêu cầu, phương pháp này sẽ tránh đọc toàn bộ tệp vào bộ nhớ cùng một lúc chỉ cho các phản hồi lớn

Xin lưu ý rằng tham số chunk_size có thể là số nguyên hoặc Không có. Tuy nhiên, khi được đặt thành giá trị số nguyên, chunk_size xác định số byte sẽ được đọc vào bộ nhớ cùng một lúc

Khi chunk_size được đặt thành Không có và luồng được đặt thành True, dữ liệu sẽ được đọc khi dữ liệu đến ở bất kỳ kích thước nào của khối được nhận như thế nào và khi nào chúng được nhận. Tuy nhiên, khi chunk_size được đặt thành Không có và luồng được đặt thành Sai, tất cả dữ liệu sẽ chỉ được trả về dưới dạng một đoạn dữ liệu duy nhất

Xem các đợt sắp tới cho khóa học chứng chỉ Python ngay bây giờ. Đọc ngay

Tiếp theo trong blog “Hướng dẫn yêu cầu” này, hãy xem cách chúng tôi có thể tải xuống một hình ảnh bằng mô-đun Yêu cầu

Tải xuống hình ảnh bằng cách sử dụng mô-đun yêu cầu

Vì vậy, hãy tải xuống hình ảnh sau đây về một khu rừng trên Pixabay bằng cách sử dụng mô-đun Yêu cầu mà chúng ta đã tìm hiểu về. Đây là hình ảnh thực tế.  

Đây là mã mà bạn sẽ cần để tải xuống hình ảnh

import requests
req = requests.get['path/to/forest.jpg', stream=True]
req.raise_for_status[]
with open['Forest.jpg', 'wb'] as fd:
for chunk in req.iter_content[chunk_size=50000]:
print['Received a Chunk']
fd.write[chunk]

Lưu ý rằng 'đường dẫn/đến/khu rừng. jpg’ là URL hình ảnh thực tế. Bạn có thể đặt URL của bất kỳ hình ảnh nào khác ở đây để tải xuống một cái gì đó khác. Đây chỉ là một ví dụ và tệp hình ảnh đã cho có kích thước khoảng 185kb và bạn đã đặt chunk_size thành 50.000 byte

Điều này có nghĩa là thông báo “Received a Chunk” sẽ được in bốn lần trong thiết bị đầu cuối. Kích thước của đoạn cuối cùng sẽ chỉ là 39350 byte vì phần tệp vẫn được nhận sau ba lần lặp đầu tiên là 39350 byte

Yêu cầu cũng cho phép bạn chuyển tham số trong URL. Điều này đặc biệt hữu ích khi bạn đang tìm kiếm một trang web cho một số kết quả như hướng dẫn hoặc hình ảnh cụ thể. Bạn có thể cung cấp các chuỗi truy vấn này dưới dạng từ điển các chuỗi bằng cách sử dụng từ khóa params trong yêu cầu GET. Kiểm tra ví dụ dễ dàng này

import requests

query = {'q': 'Forest', 'order': 'popular', 'min_width': '800', 'min_height': '600'}
req = requests.get['//pixabay.com/en/photos/', params=query]

req.url
# returns '//pixabay.com/en/photos/?order=popular_height=600&q=Forest&min_width=800'

Tiếp theo trong blog “Hướng dẫn về yêu cầu” này, chúng ta hãy xem cách chúng ta có thể thực hiện một yêu cầu POST

Làm thế nào để thực hiện một yêu cầu POST?

Thực hiện một yêu cầu POST cũng dễ dàng như thực hiện các yêu cầu GET. Bạn chỉ cần sử dụng chức năng post[] thay vì get[]

Điều này có thể hữu ích khi bạn tự động gửi biểu mẫu. Ví dụ: đoạn mã sau sẽ tải xuống toàn bộ trang Wikipedia về Công nghệ nano và lưu nó trên PC của bạn

import requests
req = requests.post['//en.wikipedia.org/w/index.php', data = {'search':'Nanotechnology'}]
req.raise_for_status[]
with open['Nanotechnology.html', 'wb'] as fd:
for chunk in req.iter_content[chunk_size=50000]:
fd.write[chunk]

Làm cách nào để Chèn Tiêu đề & Cookie vào Yêu cầu?

Như đã đề cập trước đây, bạn có thể truy cập cookie và tiêu đề mà máy chủ gửi lại cho bạn bằng req. cookie và yêu cầu. tiêu đề. Yêu cầu cũng cho phép bạn gửi cookie và tiêu đề tùy chỉnh của riêng mình kèm theo yêu cầu. Điều này có thể hữu ích khi bạn muốn, giả sử, đặt tác nhân người dùng tùy chỉnh cho yêu cầu của bạn

Để thêm các tiêu đề HTTP vào một yêu cầu, bạn chỉ cần chuyển chúng trong một lệnh chính tới tham số tiêu đề. Tương tự, bạn cũng có thể gửi cookie của riêng mình đến máy chủ bằng cách sử dụng lệnh được chuyển đến tham số cookie

________số 8

Cookie jar cũng có thể lưu trữ cookie. Chúng cung cấp một giao diện hoàn chỉnh hơn để cho phép bạn sử dụng các cookie đó trên nhiều đường dẫn

Kiểm tra ví dụ này dưới đây

import requests

jar = requests.cookies.RequestsCookieJar[]
jar.set['first_cookie', 'first', domain='httpbin.org', path='/cookies']
jar.set['second_cookie', 'second', domain='httpbin.org', path='/extra']
jar.set['third_cookie', 'third', domain='httpbin.org', path='/cookies']

url = '//httpbin.org/cookies'
req = requests.get[url, cookies=jar]

req.text

# returns '{ "cookies": { "first_cookie": "first", "third_cookie": "third" }}'

Tiếp theo trên blog "Hướng dẫn yêu cầu" này, chúng ta hãy xem các đối tượng phiên

Đối tượng phiên là gì?

Đôi khi, việc giữ lại một số thông số nhất định trên nhiều yêu cầu sẽ rất hữu ích. Đối tượng Session thực hiện chính xác điều đó. Ví dụ: nó sẽ duy trì dữ liệu cookie trên tất cả các yêu cầu được thực hiện bằng cùng một phiên

Đối tượng Phiên sử dụng tổng hợp kết nối của urllib3. Điều này có nghĩa là kết nối TCP cơ bản sẽ được sử dụng lại cho tất cả các yêu cầu được thực hiện cho cùng một máy chủ

Điều này có thể tăng đáng kể hiệu suất. Bạn cũng có thể sử dụng các phương thức của đối tượng Yêu cầu với đối tượng Phiên

Phiên cũng hữu ích khi bạn muốn gửi cùng một dữ liệu trên tất cả các yêu cầu. Ví dụ: nếu bạn quyết định gửi cookie hoặc tiêu đề tác nhân người dùng với tất cả các yêu cầu tới một miền nhất định, bạn có thể sử dụng các đối tượng Phiên

Đây là một ví dụ

$ easy_install requests
0

Như bạn có thể thấy, cookie phiên "lần truy cập tháng" được gửi cùng với cả ba yêu cầu. Tuy nhiên, cookie "năm truy cập" chỉ được gửi trong lần yêu cầu thứ hai. Cũng không có đề cập đến cookie "năm truy cập" trong yêu cầu thứ ba. Điều này xác nhận thực tế là cookie hoặc dữ liệu khác được đặt trên các yêu cầu riêng lẻ sẽ không được gửi cùng với các yêu cầu phiên khác

Phần kết luận

Các khái niệm được thảo luận trong hướng dẫn này sẽ giúp bạn thực hiện các yêu cầu cơ bản tới máy chủ bằng cách chuyển các tiêu đề, cookie hoặc chuỗi truy vấn cụ thể

Điều này sẽ rất hữu ích khi bạn đang cố gắng tìm kiếm một số trang web để biết thông tin. Giờ đây, bạn cũng có thể tự động tải xuống các tệp nhạc và hình nền từ các trang web khác nhau sau khi bạn đã tìm ra một mẫu trong URL

Sau khi đọc blog này về hướng dẫn Yêu cầu bằng Python, tôi khá chắc chắn rằng bạn muốn biết thêm về Python. Để biết thêm về Python, bạn có thể tham khảo các blog sau

Tôi hy vọng bạn thích bài đăng này trên Hướng dẫn yêu cầu. Nếu bạn có bất kỳ câu hỏi nào liên quan đến hướng dẫn này, vui lòng cho tôi biết trong phần nhận xét hoặc tham gia khóa học lấy chứng chỉ Python của chúng tôi ngay bây giờ

tiêu đề trong yêu cầu là gì?

Tiêu đề yêu cầu là tiêu đề HTTP có thể được sử dụng trong yêu cầu HTTP để cung cấp thông tin về ngữ cảnh yêu cầu để máy chủ có thể điều chỉnh phản hồi. For example, the Accept-* headers indicate the allowed and preferred formats of the response.

Tiêu đề và nội dung trong yêu cầu là gì?

Dòng bắt đầu và tiêu đề HTTP của thông báo HTTP được gọi chung là phần đầu của yêu cầu, trong khi tải trọng của nó được gọi là phần thân .

4 loại tiêu đề HTTP là gì?

Các tiêu đề cũng có thể được phân loại theo cách proxy xử lý chúng. .
Sự liên quan
Cố sống đi
Proxy-Xác thực
Ủy quyền ủy quyền
Đoạn phim giới thiệu
Mã hóa chuyển giao
xác thực

Tiêu đề yêu cầu phải chứa những gì?

Tiêu đề yêu cầu HTTP chứa thông tin ở dạng bản ghi văn bản, bao gồm các chi tiết cụ thể như. .
Loại, khả năng và phiên bản của trình duyệt tạo yêu cầu
Hệ điều hành được sử dụng bởi khách hàng
Trang được yêu cầu
Nhiều loại kết quả đầu ra được trình duyệt chấp nhận

Chủ Đề