What Là thư viện yêu cầu Python?

What Là thư viện yêu cầu Python?

Scrapeless Web Unlocker cung cấp việc truy xuất nội dung web được quản lý mà các khách hàng HTTP Python có thể gọi thông qua API.

Thư viện yêu cầu Python là một khách hàng HTTP mã nguồn mở để gửi yêu cầu và nhận phản hồi thông qua một giao diện Python đồng bộ. Bạn sử dụng Requests để lấy một tài liệu, gọi một API, gửi các thân yêu cầu được hỗ trợ, kiểm tra tiêu đề phản hồi và duy trì trạng thái khách hàng với một Phiên.

Requests cung cấp cho chương trình của bạn quyền kiểm soát đối với một trao đổi HTTP. Nó không chạy JavaScript trên trang đích hoặc diễn giải ý nghĩa kinh doanh của nội dung được trả về. Do đó, một quy trình lấy dữ liệu hữu ích tách biệt thành công phương tiện, trạng thái HTTP, định dạng phản hồi và các trường mà ứng dụng thực sự cần.

TL;DR

  • Requests gửi lưu lượng HTTP thông qua một giao diện chặn. Mã gọi sẽ chờ trong khi yêu cầu được xử lý.
  • Các phản hồi Requests phơi bày trạng thái, tiêu đề và nội dung. Giải mã JSON một mình không chứng minh rằng một cuộc gọi API đã thành công.
  • Các phiên Requests giữ cookies và tái sử dụng kết nối. Phạm vi một Phiên cho quy trình làm việc cần chia sẻ trạng thái khách hàng.
  • Requests cần một chính sách thời gian chờ rõ ràng. Một giá trị thời gian chờ không tự động là thời hạn cho toàn bộ công việc của ứng dụng.

Requests làm gì?

Requests xây dựng các yêu cầu HTTP và trả về các đối tượng Response mà mã Python có thể kiểm tra. Giao diện Requests HTTP hỗ trợ các phương thức yêu cầu thông thường, các tham số truy vấn, tiêu đề, dữ liệu biểu mẫu, thân JSON và xử lý phản hồi.

Một yêu cầu có một URL đích và một phương thức. Các tham số truy vấn thuộc về truy vấn URL, trong khi một thân yêu cầu được hỗ trợ có thể chứa đầu vào có cấu trúc. Giữ cho những lựa chọn đó phù hợp với API đích thay vì giả định rằng mọi máy chủ đều chấp nhận cùng một định dạng.

Requests xử lý trao đổi, nhưng ứng dụng chọn hợp đồng. Nếu công việc mong đợi một tài liệu sản phẩm, hãy kiểm tra rằng phản hồi cuối cùng chứa tài liệu đó. Nếu nó mong đợi các bản ghi JSON, hãy xác thực loại và các trường phản hồi. Một thư viện vận chuyển không thể suy ra liệu một trang HTML có phải là nội dung được yêu cầu, một thông điệp truy cập, hoặc một trang lỗi chung.

Sử dụng Requests khi một khách hàng đồng bộ phù hợp với ứng dụng. Một tác vụ nhỏ đã được lên lịch hoặc cuộc gọi giữa các dịch vụ có thể đơn giản với mô hình này. Một khối lượng công việc cần nhiều yêu cầu độc lập đồng thời xứng đáng với một quyết định riêng về thực thi và giới hạn tài nguyên.

Cách đọc một phản hồi đúng cách

Một phản hồi nên được đánh giá theo từng giai đoạn: trạng thái, đích cuối cùng, loại nội dung và nội dung riêng của ứng dụng. Các chuẩn ngữ nghĩa HTTP xác định trạng thái phản hồi và hành vi phương thức, trong khi sơ đồ của ứng dụng bạn xác định nội dung thân thành công phải chứa gì.

Mã trạng thái là dấu hiệu đầu tiên. Requests có thể phơi bày nó trực tiếp và có thể phát sinh một ngoại lệ cho trạng thái lỗi HTTP thông qua. raise_for_status()Kiểm tra đó không chứng minh rằng một thân trạng thái thành công chứa các trường mong muốn. Một số trang web trả về một trang truy cập hoặc một khung ứng dụng trống với trạng thái thành công bình thường.

Chọn đại diện nội dung một cách có chủ đích. content cung cấp byte phản hồi; text cung cấp văn bản đã giải mã. json() giải mã JSON khi thân phản hồi là JSON hợp lệ. Một máy chủ có thể trả về một đối tượng lỗi JSON hợp lệ, vì vậy việc giải mã thành công phải được theo sau bởi các kiểm tra trạng thái và sơ đồ.

Đối với các bản ghi đã được trích xuất, hãy ghi lại URL nguồn và ngữ cảnh yêu cầu liên quan cùng với các trường. Nếu một chuyển hướng thay đổi đích, hãy giữ lại URL cuối cùng. Xuất xứ đó giúp giải thích lý do tại sao hai lần chạy tạo ra nội dung khác nhau.

Điều gì mà một Phiên Requests bảo tồn

Một Phiên Requests bảo tồn cookies và cấu hình chia sẻ và hỗ trợ tái sử dụng kết nối thông qua bể kết nối cơ sở của nó. Hành vi Phiên Requests cho phép các cuộc gọi liên quan sử dụng cùng một bối cảnh khách hàng mà không cần xây dựng lại mỗi yêu cầu từ đầu.

Các cookie và kết nối TCP là những hình thức liên tục khác nhau. Một cookie có thể xác định trạng thái ứng dụng, trong khi một kết nối được nhóm lại giảm thiểu công việc thiết lập kết nối. Không một cái nào tự động ràng buộc lưu lượng của bạn với một lối ra proxy. Nếu một quy trình cần một địa chỉ IP lối ra ổn định, chính sách phiên của proxy phải cung cấp nó một cách riêng biệt.

Phạm vi các phiên quanh các danh tính và nhiệm vụ cần chia sẻ trạng thái. Một quy trình làm việc được ủy quyền ở một khu vực không nên vô tình tái sử dụng cookies từ bài kiểm tra độc lập của khu vực khác. Giữ các thông tin xác thực và cookies không liên quan trong các bối cảnh khách hàng riêng biệt.

Đóng Phiên khi quy trình làm việc hoàn tất. Đối với các phản hồi phát trực tiếp, tiêu thụ hoặc đóng phản hồi để tài nguyên kết nối có thể được giải phóng. Một ứng dụng lâu dài cần sở hữu tài nguyên có chủ đích; để mỗi phản hồi mở có thể làm cạn kiệt chính bể mà nó hướng tới việc cải thiện hiệu quả.

Thời gian chờ của một yêu cầu có nghĩa là gì?

Một thời gian chờ của Requests kiểm soát thời gian chờ trong các hoạt động mạng, thay vì thiết lập một thời hạn đồng hồ-guaranteed cho toàn bộ công việc. Requests không áp dụng một thời gian chờ mặc định trừ khi bạn cung cấp một.

Một thời gian chờ kết nối liên quan đến việc thiết lập kết nối. Một thời gian chờ đọc liên quan đến việc chờ dữ liệu từ máy chủ. Những giá trị này mô tả hành vi chờ mạng; chuyển hướng, một vài cuộc gọi, phân tích và lưu trữ bổ sung công việc ngoài một khoảng thời gian chờ đơn.

Đặt các giá trị rõ ràng phù hợp với mục tiêu và nhu cầu của ứng dụng, và định nghĩa những gì công việc nên làm nếu yêu cầu không thể hoàn thành trong khoảng thời gian đó. Một lô cũng cần ngân sách công việc tổng thể của riêng nó và các quy tắc hủy bỏ. Nhầm lẫn một thời gian chờ theo yêu cầu với thời hạn toàn bộ lô có thể để lại một tác vụ đã được lên lịch lâu hơn nhiều so với mong đợi.

Chẩn đoán các thất bại theo giai đoạn. Giải quyết tên miền, thiết lập kết nối, xác minh TLS, trạng thái HTTP và giải mã là những vấn đề riêng biệt. Ghi lại giai đoạn và một hạng mục lỗi đã được làm sạch hữu ích hơn là chỉ ghi lại rằng yêu cầu đã thất bại.

Tiêu đề, Xác thực và Chuyển tiếp

Tiêu đề mô tả siêu dữ liệu yêu cầu, trong khi xác thực cung cấp thông tin xác thực cần thiết cho đích đến hoặc proxy. Sử dụng cơ chế mà API thực sự tài liệu, và giữ bí mật bên ngoài mã nguồn đã xuất bản và nhật ký thường xuyên.

Một cơ thể yêu cầu JSON và một cơ thể biểu mẫu có mã hóa khác nhau. Trong Requests, các đầu vào JSON và dữ liệu phục vụ các mục đích khác nhau. Gửi các trường đúng trong định dạng sai có thể gây ra lỗi xác thực ngay cả khi xác thực là chính xác.

Chuyển tiếp có thể thay đổi đích đến cuối cùng. Kiểm tra lịch sử chuyển tiếp và URL cuối cùng khi nhiệm vụ phụ thuộc vào một tài nguyên cụ thể. Đối xử với việc di chuyển đến màn hình đăng nhập hoặc trang chính như một sự không khớp nội dung, ngay cả khi đích đến đó trả về trạng thái thành công.

Tách biệt thông tin xác thực proxy khỏi thông tin xác thực đích đến. Xác thực proxy chứng tỏ rằng bạn có thể sử dụng dịch vụ định tuyến; xác thực đích đến chứng tỏ rằng ứng dụng có thể truy cập tài nguyên đã yêu cầu. Chuyển các bí mật đến lớp sai có thể làm thất bại yêu cầu và phơi bày thông tin xác thực một cách không cần thiết.

Cách Requests Sử dụng Proxy và TLS

Requests có thể định tuyến lưu lượng truy cập đến đích HTTP và HTTPS thông qua các proxy đã cấu hình, và nó xác minh chứng chỉ HTTPS theo mặc định. Giao thức TLS cung cấp vận chuyển được mã hóa nơi TLS được sử dụng; chỉ định tuyến proxy không tạo ra mã hóa cho mọi kết nối.

Sơ đồ đích đến và sơ đồ proxy mô tả các bước khác nhau. Một URL HTTPS có thể được yêu cầu thông qua một proxy HTTP bằng cách sử dụng một đường hầm CONNECT. Phiên TLS của mục tiêu có thể duy trì giữa máy khách và đích đến bên trong đường hầm đó. Một vận chuyển proxy hỗ trợ TLS thêm bảo vệ cho kết nối từ máy khách đến proxy khi máy khách và proxy hỗ trợ điều đó.

Requests cũng xem xét cấu hình môi trường, vì vậy một cài đặt proxy cấp shell hoặc triển khai có thể ảnh hưởng đến một yêu cầu đơn giản. Kiểm tra các cài đặt hiệu quả khi hành vi khác nhau giữa các máy.

Hỗ trợ SOCKS yêu cầu phụ thuộc tùy chọn có liên quan. Hành vi phân giải tên máy chủ phụ thuộc vào sơ đồ đã chọn: thực hiện Requests phân biệt phân giải cục bộ với phân giải phía proxy. Xác nhận hỗ trợ của máy khách và hành vi DNS trước khi đưa ra tuyên bố về quyền riêng tư hoặc vị trí.

Requests So sánh với Scrapy và Trình duyệt

Requests thích hợp khi dữ liệu cần thiết có sẵn thông qua phản hồi HTTP và ứng dụng có thể sở hữu lịch trình và phân tích. Một khung crawler và một thời gian chạy trình duyệt thêm các khả năng mà Requests không cung cấp tự nó.

Yêu cầuRequests Một mìnhLớp bổ sung
Lấy một URL công cộng đã biếtCó thể gửi yêu cầu và kiểm tra phản hồiMột bộ phân tích nếu các trường có cấu trúc cần thiết
Khám phá các trang liên kếtMã ứng dụng phải tổ chức việc phát hiệnMột khung crawler cho lịch trình và phạm vi
Chạy JavaScript trangKhông thực thi mã trang trình duyệtMột lớp hiển thị hoặc trình duyệt
Xác thực hồ sơ kinh doanhKhông biết sơ đồ kinh doanhKiểm tra sơ đồ và nội dung rõ ràng

So sánh công cụ thu thập dữ liệu Python giúp tách biệt những trách nhiệm đó. Việc chọn một bộ phân tích HTML khác sẽ không giải quyết nội dung vắng mặt từ tài liệu đã tải xuống.

Nơi Phù hợp với Việc Truy xuất Nội dung Quản lý

Việc truy xuất nội dung quản lý phù hợp khi ứng dụng muốn một giao diện hướng HTTP nhưng mục tiêu yêu cầu xử lý hoặc hiển thị truy cập bổ sung. Scrapeless Web Unlocker cung cấp dịch vụ truy xuất đó, trong khi mã Python của bạn vẫn chịu trách nhiệm về đầu vào yêu cầu và diễn giải nội dung đã trả về.

Tài liệu truy xuất của Web Unlocker mô tả vai trò của sản phẩm. Yêu cầu một dịch vụ quản lý có hai hợp đồng để kiểm tra: phản hồi dịch vụ và nội dung mục tiêu mà nó mang theo. Xác thực kết quả dịch vụ trước khi chuyển giao nội dung cho một bộ phân tích hoặc lưu trữ hồ sơ.

Giữ một bộ điều hợp truy xuất nhỏ. Để nó trả lại nội dung và ngữ cảnh liên quan mà không nhúng tất cả các biến đổi kinh doanh của ứng dụng. Điều đó làm cho việc so sánh trực tiếp việc lấy yêu cầu với việc lấy quản lý trên cùng một mẫu được phép mà không thay đổi mô hình hồ sơ dòng chảy phía dưới.

Xem xét Giá Scrapeless so với số lượng truy xuất mà nhiệm vụ của bạn cần. Sử dụng nội dung đã chấp nhận và hồ sơ được xác thực như là kết quả so sánh, thay vì đếm mọi trao đổi HTTP hoàn thành như là công việc tương đương.

Kết luận

Thư viện yêu cầu Python là một khách hàng HTTP thực tế khi ứng dụng của bạn cần kiểm soát trực tiếp các yêu cầu và có thể làm việc với giao diện đồng bộ. Đặt thời gian chờ, bảo tồn trạng thái khách hàng một cách có chủ ý, giữ cho xác minh TLS được bật và xác thực cả phản hồi và nội dung của nó. Thêm thu thập hoặc dựng hình chỉ khi nhiệm vụ yêu cầu lớp đó.

Chọn Lớp Lấy Dữ Liệu HTTP Đúng

Sử dụng một khách hàng HTTP để kiểm soát yêu cầu và đánh giá việc lấy dữ liệu được quản lý khi mục tiêu của bạn yêu cầu quyền truy cập hoặc hỗ trợ dựng hình bổ sung.

Đăng ký hôm nay và nhận 5 đô la tín dụng miễn phí — không yêu cầu thẻ tín dụng.

Nhận Tín Dụng 5 đô la của Bạn →

Câu hỏi thường gặp

H: Yêu cầu có phải là một phần của thư viện tiêu chuẩn Python không?

Yêu cầu là một thư viện Python của bên thứ ba chứ không phải là một mô-đun trong thư viện tiêu chuẩn. Sử dụng quản lý phụ thuộc của dự án của bạn để cài đặt và ghi lại phiên bản bạn triển khai. Giữ cho lựa chọn đó tách biệt với thời gian chạy Python và bất kỳ phụ thuộc tùy chọn nào cần thiết cho một giao thức proxy cụ thể.

H: Yêu cầu có thực thi JavaScript không?

Yêu cầu không thực thi JavaScript trên trang. Nó nhận nội dung được trả về bởi một yêu cầu HTTP. Nếu các trường chỉ xuất hiện sau khi bảng duyệt hình, hãy kiểm tra nguồn dữ liệu thực tế hoặc chọn một lớp dựng hình thay vì thay đổi liên tục các bộ chọn trích xuất.

H: Việc giải mã JSON thành công có nghĩa là yêu cầu đã thành công không?

Giải mã JSON thành công chỉ có nghĩa là nội dung phản hồi là JSON hợp lệ. Kiểm tra trạng thái HTTP, kết quả dịch vụ và các trường mong đợi một cách riêng biệt. Một API có thể gửi một đối tượng lỗi dưới dạng JSON hợp lệ, và một đối tượng trạng thái thành công vẫn có thể bỏ qua một bản ghi yêu cầu.

H: Một Phiên Yêu cầu có giữ nguyên địa chỉ IP proxy không?

Một Phiên Yêu cầu không tự động đảm bảo cùng một địa chỉ IP thoát proxy. Nó bảo tồn cookie và hỗ trợ nhóm kết nối. Tính liên tục IP thoát phụ thuộc vào cấu hình proxy và chính sách phiên, mà phải khớp với quy trình làm việc logic sử dụng những cookie đó.

H: Tại sao xác minh chứng chỉ nên được giữ cho bật?

Xác minh chứng chỉ nên được giữ cho bật để HTTPS kiểm tra danh tính của điểm đến dựa trên các chứng chỉ được tin cậy. Việc vô hiệu hóa kiểm tra đó làm yếu đi bảo vệ chống lại sự mạo danh. Kiểm tra độ tin cậy chứng chỉ và cấu hình triển khai khi xác minh thất bại thay vì tắt kiểm tra như một giải pháp tạm thời.

Tài liệu tham khảo