Mã hóa phần trăm giải mã html python

Mã hóa URL là điều cần thiết khi xử lý các API có thêm tham số đường dẫn hoặc chuỗi truy vấn. Các tham số đường dẫn và chuỗi truy vấn cần được mã hóa chính xác trong URL để đảm bảo an toàn

Hơn nữa, mã hóa URL cũng được sử dụng trong việc chuẩn bị dữ liệu để gửi. Tuy nhiên, rất khó để lập trình viên hiểu được dữ liệu được mã hóa này, đó là lý do tại sao cần phải giải mã nó

Hướng dẫn này trình bày các cách khác nhau có sẵn để giải mã một URL trong Python

Khi xử lý các biểu mẫu HTML, chúng sử dụng loại nội dung

delftstack.com/code= HOW TO Articles
49 theo mặc định để gửi tham số. Các tham số nhận được từ các biểu mẫu này trước tiên phải được giải mã để chúng có thể sử dụng được trong Python

Sử dụng hàm
delftstack.com/code= HOW TO Articles
50 để giải mã URL trong Python

Hàm

delftstack.com/code= HOW TO Articles
50 được sử dụng để chuyển đổi một cách minh bạch và hiệu quả chuỗi đã cho từ dữ liệu được mã hóa theo phần trăm sang dữ liệu
delftstack.com/code= HOW TO Articles
52 trong khi sau đó tiếp tục chuyển đổi nó thành văn bản thuần túy

Hàm

delftstack.com/code= HOW TO Articles
50 thay thế chuỗi thoát
delftstack.com/code= HOW TO Articles
1 bằng ký tự đơn tương đương. Hàm này hoạt động khi đối tượng đã cho là đối tượng
delftstack.com/code= HOW TO Articles
2 hoặc
delftstack.com/code= HOW TO Articles
3

Để sử dụng chức năng này trong mã python của bạn, trước tiên bạn nhập thư viện

delftstack.com/code= HOW TO Articles
4. Gói này cung cấp một số thư viện và chức năng giúp dễ dàng làm việc với các URL trong Python

Đoạn mã sau sử dụng hàm

delftstack.com/code= HOW TO Articles
50 để giải mã một URL trong Python

import urllib.parse
url = 'delftstack.com/code=%20HOW%20TO%20Articles'
x = urllib.parse.unquote[url]
print[x]

Đoạn mã trên cung cấp Đầu ra sau

delftstack.com/code= HOW TO Articles

Sử dụng hàm
delftstack.com/code= HOW TO Articles
6 để giải mã URL trong Python

Nó hoạt động tương tự như hàm

delftstack.com/code= HOW TO Articles
50 đã đề cập ở trên nhưng có một sự khác biệt đáng kể được giải thích thêm

Các biểu mẫu HTML thường chứa các ký hiệu

delftstack.com/code= HOW TO Articles
8 trong khi giải mã các giá trị. Trong khi hàm
delftstack.com/code= HOW TO Articles
50 không có khả năng giải mã ký hiệu
delftstack.com/code= HOW TO Articles
8 thì hàm
delftstack.com/code= HOW TO Articles
6 giải mã URL chứa ký hiệu
delftstack.com/code= HOW TO Articles
8 bằng cách thay thế tất cả các ký hiệu
delftstack.com/code= HOW TO Articles
8 bằng dấu cách

Hàm này chỉ hoạt động khi đối tượng đã cho là đối tượng

delftstack.com/code= HOW TO Articles
3

Đoạn mã sau sử dụng hàm

delftstack.com/code= HOW TO Articles
6 để giải mã một URL trong Python

delftstack.com/code= HOW TO Articles
4

Đoạn mã trên cung cấp đầu ra sau

delftstack.com/code= HOW TO Articles
5

Sử dụng Mô-đun
delftstack.com/code= HOW TO Articles
46 để giải mã URL bằng Python

Python có một thư viện

delftstack.com/code= HOW TO Articles
46 không phức tạp và hiệu quả để gửi các yêu cầu HTTP thông qua Python. Thư viện
delftstack.com/code= HOW TO Articles
46 cũng có thể hữu ích để hoàn thành tác vụ này, vì thư viện này thường được sử dụng khi xử lý các biểu mẫu HTML trong Python

Khá giống hàm

delftstack.com/code= HOW TO Articles
50, hàm
delftstack.com/code= HOW TO Articles
50 cũng không lọc ký hiệu
delftstack.com/code= HOW TO Articles
8 khi giải mã URL

Mô-đun này xác định một giao diện tiêu chuẩn để ngắt các chuỗi Bộ định vị tài nguyên thống nhất [URL] trong các thành phần [sơ đồ địa chỉ, vị trí mạng, đường dẫn, v.v. ], để kết hợp các thành phần lại thành chuỗi URL và để chuyển đổi "URL tương đối" thành URL tuyệt đối được cung cấp "URL cơ sở. ”

Mô-đun đã được thiết kế để khớp với RFC internet trên Bộ định vị tài nguyên đồng nhất tương đối. Nó hỗ trợ các lược đồ URL sau. _______258, _______259, _______210, _______211, _______212, _______213, _______214, _______215, _______216, _______217, _______218, _______219, _______310, _______311, _______312, _______313, _______314, _______315, _______316, _______317, _______318, _______319, _______410, _______411, _______412,

Mô-đun

delftstack.com/code= HOW TO Articles
60 xác định các chức năng thuộc hai loại chính. Phân tích cú pháp URL và trích dẫn URL. Chúng được đề cập chi tiết trong các phần sau

Phân tích URL¶

Các chức năng phân tích cú pháp URL tập trung vào việc tách chuỗi URL thành các thành phần của nó hoặc kết hợp các thành phần URL thành chuỗi URL

urllib. phân tích cú pháp. urlparse[urlstring , scheme='', allow_fragments=True]

Phân tích cú pháp URL thành sáu thành phần, trả về một bộ gồm 6 mục có tên . Điều này tương ứng với cấu trúc chung của một URL.

import urllib.parse
url = 'delftstack.com/code=%20HOW%20TO%20Articles'
x = urllib.parse.unquote[url]
print[x]
15. Mỗi mục tuple là một chuỗi, có thể trống. Các thành phần không được chia thành các phần nhỏ hơn [ví dụ: vị trí mạng là một chuỗi đơn] và % thoát không được mở rộng. Các dấu phân cách như được hiển thị ở trên không phải là một phần của kết quả, ngoại trừ dấu gạch chéo ở đầu trong thành phần đường dẫn, dấu gạch chéo này sẽ được giữ lại nếu có. Ví dụ.

import urllib.parse
url = 'delftstack.com/code=%20HOW%20TO%20Articles'
x = urllib.parse.unquote[url]
print[x]
6

Theo các đặc tả cú pháp trong RFC 1808, urlparse chỉ nhận ra một netloc nếu nó được giới thiệu đúng bởi '//'. Mặt khác, đầu vào được coi là một URL tương đối và do đó bắt đầu với một thành phần đường dẫn

delftstack.com/code= HOW TO Articles
1

Đối số lược đồ cung cấp lược đồ địa chỉ mặc định, chỉ được sử dụng nếu URL không chỉ định một. Nó phải cùng loại [văn bản hoặc byte] với chuỗi url, ngoại trừ giá trị mặc định

import urllib.parse
url = 'delftstack.com/code=%20HOW%20TO%20Articles'
x = urllib.parse.unquote[url]
print[x]
16 luôn được cho phép và được tự động chuyển đổi thành
import urllib.parse
url = 'delftstack.com/code=%20HOW%20TO%20Articles'
x = urllib.parse.unquote[url]
print[x]
17 nếu thích hợp

Nếu đối số allow_fragments là sai, mã định danh phân đoạn không được nhận dạng. Thay vào đó, chúng được phân tích cú pháp như một phần của đường dẫn, tham số hoặc thành phần truy vấn và

import urllib.parse
url = 'delftstack.com/code=%20HOW%20TO%20Articles'
x = urllib.parse.unquote[url]
print[x]
18 được đặt thành chuỗi trống trong giá trị trả về

Giá trị trả về là một bộ có tên , có nghĩa là các mục của nó có thể được truy cập theo chỉ mục hoặc dưới dạng các thuộc tính được đặt tên.

Thuộc tính

Mục lục

Giá trị

Giá trị nếu không có mặt

import urllib.parse
url = 'delftstack.com/code=%20HOW%20TO%20Articles'
x = urllib.parse.unquote[url]
print[x]
19

0

Trình xác định lược đồ URL

tham số sơ đồ

delftstack.com/code= HOW TO Articles
20

1

Phần vị trí mạng

chuỗi rỗng

delftstack.com/code= HOW TO Articles
21

2

đường dẫn phân cấp

chuỗi rỗng

delftstack.com/code= HOW TO Articles
22

3

Tham số cho phần tử đường dẫn cuối cùng

chuỗi rỗng

delftstack.com/code= HOW TO Articles
23

4

thành phần truy vấn

chuỗi rỗng

import urllib.parse
url = 'delftstack.com/code=%20HOW%20TO%20Articles'
x = urllib.parse.unquote[url]
print[x]
18

5

mã định danh đoạn

chuỗi rỗng

delftstack.com/code= HOW TO Articles
25

Tên tài khoản

delftstack.com/code= HOW TO Articles
26

delftstack.com/code= HOW TO Articles
27

Mật khẩu

delftstack.com/code= HOW TO Articles
26

delftstack.com/code= HOW TO Articles
29

Tên máy chủ [viết thường]

delftstack.com/code= HOW TO Articles
26

delftstack.com/code= HOW TO Articles
31

Số cổng là số nguyên, nếu có

delftstack.com/code= HOW TO Articles
26

Đọc thuộc tính

delftstack.com/code= HOW TO Articles
31 sẽ tăng
delftstack.com/code= HOW TO Articles
34 nếu một cổng không hợp lệ được chỉ định trong URL. Xem phần Kết quả phân tích cú pháp có cấu trúc để biết thêm thông tin về đối tượng kết quả.

Dấu ngoặc vuông chưa khớp trong thuộc tính

delftstack.com/code= HOW TO Articles
20 sẽ tăng
delftstack.com/code= HOW TO Articles
34

Các ký tự trong thuộc tính

delftstack.com/code= HOW TO Articles
20 phân tách theo chuẩn hóa NFKC [như được sử dụng bởi mã hóa IDNA] thành bất kỳ ký tự nào trong số
delftstack.com/code= HOW TO Articles
38,
delftstack.com/code= HOW TO Articles
39,
delftstack.com/code= HOW TO Articles
20,
delftstack.com/code= HOW TO Articles
21 hoặc
delftstack.com/code= HOW TO Articles
22 sẽ tạo ra một
delftstack.com/code= HOW TO Articles
34. Nếu URL được phân tách trước khi phân tích cú pháp, sẽ không có lỗi nào phát sinh

Như trường hợp của tất cả các bộ dữ liệu được đặt tên, lớp con có một vài phương thức và thuộc tính bổ sung đặc biệt hữu ích. Một phương pháp như vậy là

delftstack.com/code= HOW TO Articles
24. Phương thức
delftstack.com/code= HOW TO Articles
24 sẽ trả về một đối tượng ParseResult mới thay thế các trường đã chỉ định bằng các giá trị mới

delftstack.com/code= HOW TO Articles
1

Đã thay đổi trong phiên bản 3. 2. Đã thêm khả năng phân tích cú pháp URL IPv6.

Đã thay đổi trong phiên bản 3. 3. Đoạn hiện được phân tích cú pháp cho tất cả các lược đồ URL [trừ khi allow_fragment là sai], theo RFC 3986. Trước đây, đã tồn tại một danh sách cho phép các lược đồ hỗ trợ các phân đoạn.

Đã thay đổi trong phiên bản 3. 6. Số cổng ngoài phạm vi hiện tăng

delftstack.com/code= HOW TO Articles
34, thay vì trả về
delftstack.com/code= HOW TO Articles
26.

Đã thay đổi trong phiên bản 3. 8. Các ký tự ảnh hưởng đến phân tích cú pháp netloc theo chuẩn hóa NFKC giờ đây sẽ tăng

delftstack.com/code= HOW TO Articles
34.

urllib. phân tích cú pháp. parse_qs[qs , keep_blank_values=False, strict_parsing=False, encoding='utf-8', errors='replace', max_num_fields=None, separator='&']

Phân tích chuỗi truy vấn được cung cấp dưới dạng đối số chuỗi [dữ liệu thuộc loại ứng dụng/x-www-form-urlencoding]. Dữ liệu được trả về dưới dạng từ điển. Các khóa từ điển là các tên biến truy vấn duy nhất và các giá trị là danh sách các giá trị cho mỗi tên

Đối số tùy chọn keep_blank_values ​​là cờ cho biết liệu các giá trị trống trong truy vấn được mã hóa theo phần trăm có được coi là chuỗi trống hay không. Một giá trị true chỉ ra rằng các khoảng trống nên được giữ lại dưới dạng các chuỗi trống. Giá trị sai mặc định cho biết rằng các giá trị trống sẽ bị bỏ qua và coi như chúng không được bao gồm

Đối số tùy chọnstrict_parsing là cờ cho biết phải làm gì với lỗi phân tích cú pháp. Nếu sai [mặc định], lỗi sẽ bị bỏ qua. Nếu đúng, lỗi sẽ tăng ngoại lệ

delftstack.com/code= HOW TO Articles
34

Các tham số mã hóa và lỗi tùy chọn chỉ định cách giải mã các chuỗi được mã hóa theo phần trăm thành các ký tự Unicode, như được chấp nhận bởi phương thức

delftstack.com/code= HOW TO Articles
600

Đối số tùy chọn max_num_fields là số lượng trường tối đa để đọc. Nếu được đặt, sau đó ném một

delftstack.com/code= HOW TO Articles
34 nếu có nhiều hơn max_num_fields trường được đọc

Dấu tách đối số tùy chọn là ký hiệu được sử dụng để tách các đối số truy vấn. Nó mặc định là

delftstack.com/code= HOW TO Articles
602

Sử dụng hàm

delftstack.com/code= HOW TO Articles
603 [với tham số
delftstack.com/code= HOW TO Articles
604 được đặt thành
delftstack.com/code= HOW TO Articles
605] để chuyển đổi các từ điển đó thành các chuỗi truy vấn

Đã thay đổi trong phiên bản 3. 2. Thêm thông số mã hóa và lỗi.

Đã thay đổi trong phiên bản 3. 8. Đã thêm tham số max_num_fields.

Đã thay đổi trong phiên bản 3. 10. Đã thêm tham số dấu phân cách với giá trị mặc định là

delftstack.com/code= HOW TO Articles
602. Các phiên bản Python sớm hơn Python 3. 10 được phép sử dụng cả
delftstack.com/code= HOW TO Articles
607 và
delftstack.com/code= HOW TO Articles
602 làm dấu tách tham số truy vấn. Điều này đã được thay đổi để chỉ cho phép một khóa phân tách duy nhất, với ____ 2602 làm dấu phân cách mặc định.

urllib. phân tích cú pháp. parse_qsl[qs , keep_blank_values=False, strict_parsing=False, encoding='utf-8', errors='replace', max_num_fields=None, separator='&']

Phân tích chuỗi truy vấn được cung cấp dưới dạng đối số chuỗi [dữ liệu thuộc loại ứng dụng/x-www-form-urlencoding]. Dữ liệu được trả về dưới dạng danh sách các cặp tên, giá trị

Đối số tùy chọn keep_blank_values ​​là cờ cho biết liệu các giá trị trống trong truy vấn được mã hóa theo phần trăm có được coi là chuỗi trống hay không. Một giá trị true chỉ ra rằng các khoảng trống nên được giữ lại dưới dạng các chuỗi trống. Giá trị sai mặc định cho biết rằng các giá trị trống sẽ bị bỏ qua và coi như chúng không được bao gồm

Đối số tùy chọnstrict_parsing là cờ cho biết phải làm gì với lỗi phân tích cú pháp. Nếu sai [mặc định], lỗi sẽ bị bỏ qua. Nếu đúng, lỗi sẽ tăng ngoại lệ

delftstack.com/code= HOW TO Articles
34

Các tham số mã hóa và lỗi tùy chọn chỉ định cách giải mã các chuỗi được mã hóa theo phần trăm thành các ký tự Unicode, như được chấp nhận bởi phương thức

delftstack.com/code= HOW TO Articles
600

Đối số tùy chọn max_num_fields là số lượng trường tối đa để đọc. Nếu được đặt, sau đó ném một

delftstack.com/code= HOW TO Articles
34 nếu có nhiều hơn max_num_fields trường được đọc

Dấu tách đối số tùy chọn là ký hiệu được sử dụng để tách các đối số truy vấn. Nó mặc định là

delftstack.com/code= HOW TO Articles
602

Sử dụng hàm

delftstack.com/code= HOW TO Articles
603 để chuyển đổi danh sách các cặp đó thành chuỗi truy vấn

Đã thay đổi trong phiên bản 3. 2. Thêm thông số mã hóa và lỗi.

Đã thay đổi trong phiên bản 3. 8. Đã thêm tham số max_num_fields.

Đã thay đổi trong phiên bản 3. 10. Đã thêm tham số dấu phân cách với giá trị mặc định là

delftstack.com/code= HOW TO Articles
602. Các phiên bản Python sớm hơn Python 3. 10 được phép sử dụng cả
delftstack.com/code= HOW TO Articles
607 và
delftstack.com/code= HOW TO Articles
602 làm dấu tách tham số truy vấn. Điều này đã được thay đổi để chỉ cho phép một khóa phân tách duy nhất, với ____ 2602 làm dấu phân cách mặc định.

urllib. phân tích cú pháp. urlunparse[phần]

Tạo một URL từ một tuple như được trả về bởi

delftstack.com/code= HOW TO Articles
589. Đối số bộ phận có thể là bất kỳ sáu mục nào có thể lặp lại. Điều này có thể dẫn đến một URL hơi khác, nhưng tương đương, nếu URL đã được phân tích cú pháp ban đầu có các dấu phân cách không cần thiết [ví dụ:
delftstack.com/code= HOW TO Articles
39 với truy vấn trống; RFC tuyên bố rằng các dấu phân cách này là tương đương]

urllib. phân tích cú pháp. urlsplit[urlstring , scheme='', allow_fragments=True]

Điều này tương tự như

delftstack.com/code= HOW TO Articles
589, nhưng không tách các tham số khỏi URL. Điều này thường được sử dụng thay cho
delftstack.com/code= HOW TO Articles
589 nếu muốn có cú pháp URL mới hơn cho phép áp dụng các tham số cho từng phân đoạn của phần đường dẫn của URL [xem RFC 2396]. Cần có một chức năng riêng biệt để phân tách các đoạn đường dẫn và tham số. Hàm này trả về một bộ gồm 5 mục có tên .

import urllib.parse
url = 'delftstack.com/code=%20HOW%20TO%20Articles'
x = urllib.parse.unquote[url]
print[x]
1

Giá trị trả về là một bộ có tên , các mục của nó có thể được truy cập theo chỉ mục hoặc dưới dạng thuộc tính được đặt tên.

Thuộc tính

Mục lục

Giá trị

Giá trị nếu không có mặt

import urllib.parse
url = 'delftstack.com/code=%20HOW%20TO%20Articles'
x = urllib.parse.unquote[url]
print[x]
19

0

Trình xác định lược đồ URL

tham số sơ đồ

delftstack.com/code= HOW TO Articles
20

1

Phần vị trí mạng

chuỗi rỗng

delftstack.com/code= HOW TO Articles
21

2

đường dẫn phân cấp

chuỗi rỗng

delftstack.com/code= HOW TO Articles
23

3

thành phần truy vấn

chuỗi rỗng

import urllib.parse
url = 'delftstack.com/code=%20HOW%20TO%20Articles'
x = urllib.parse.unquote[url]
print[x]
18

4

mã định danh đoạn

chuỗi rỗng

delftstack.com/code= HOW TO Articles
25

Tên tài khoản

delftstack.com/code= HOW TO Articles
26

delftstack.com/code= HOW TO Articles
27

Mật khẩu

delftstack.com/code= HOW TO Articles
26

delftstack.com/code= HOW TO Articles
29

Tên máy chủ [viết thường]

delftstack.com/code= HOW TO Articles
26

delftstack.com/code= HOW TO Articles
31

Số cổng là số nguyên, nếu có

delftstack.com/code= HOW TO Articles
26

Đọc thuộc tính

delftstack.com/code= HOW TO Articles
31 sẽ tăng
delftstack.com/code= HOW TO Articles
34 nếu một cổng không hợp lệ được chỉ định trong URL. Xem phần Kết quả phân tích cú pháp có cấu trúc để biết thêm thông tin về đối tượng kết quả.

Dấu ngoặc vuông chưa khớp trong thuộc tính

delftstack.com/code= HOW TO Articles
20 sẽ tăng
delftstack.com/code= HOW TO Articles
34

Các ký tự trong thuộc tính

delftstack.com/code= HOW TO Articles
20 phân tách theo chuẩn hóa NFKC [như được sử dụng bởi mã hóa IDNA] thành bất kỳ ký tự nào trong số
delftstack.com/code= HOW TO Articles
38,
delftstack.com/code= HOW TO Articles
39,
delftstack.com/code= HOW TO Articles
20,
delftstack.com/code= HOW TO Articles
21 hoặc
delftstack.com/code= HOW TO Articles
22 sẽ tạo ra một
delftstack.com/code= HOW TO Articles
34. Nếu URL được phân tách trước khi phân tích cú pháp, sẽ không có lỗi nào phát sinh

Theo thông số WHATWG cập nhật RFC 3986, các ký tự dòng mới ASCII

delftstack.com/code= HOW TO Articles
117,
delftstack.com/code= HOW TO Articles
118 và tab
delftstack.com/code= HOW TO Articles
119 bị xóa khỏi URL

Đã thay đổi trong phiên bản 3. 6. Số cổng ngoài phạm vi hiện tăng

delftstack.com/code= HOW TO Articles
34, thay vì trả về
delftstack.com/code= HOW TO Articles
26.

Đã thay đổi trong phiên bản 3. 8. Các ký tự ảnh hưởng đến phân tích cú pháp netloc theo chuẩn hóa NFKC giờ đây sẽ tăng

delftstack.com/code= HOW TO Articles
34.

Đã thay đổi trong phiên bản 3. 10. Các ký tự tab và dòng mới ASCII bị xóa khỏi URL.

urllib. phân tích cú pháp. urlunsplit[các phần]

Kết hợp các phần tử của một bộ do

delftstack.com/code= HOW TO Articles
123 trả về thành một URL hoàn chỉnh dưới dạng một chuỗi. Đối số bộ phận có thể là bất kỳ năm mục nào có thể lặp lại. Điều này có thể dẫn đến một URL hơi khác, nhưng tương đương, nếu URL đã được phân tích cú pháp ban đầu có các dấu phân cách không cần thiết [ví dụ: dấu ? với truy vấn trống; RFC tuyên bố rằng các dấu phân cách này là tương đương]

urllib. phân tích cú pháp. urljoin[base , url, allow_fragments=True]

Xây dựng một URL [“tuyệt đối”] đầy đủ bằng cách kết hợp một “URL cơ sở” [base] với một URL [url] khác. Một cách không chính thức, điều này sử dụng các thành phần của URL cơ sở, cụ thể là lược đồ địa chỉ, vị trí mạng và [một phần] đường dẫn, để cung cấp các thành phần còn thiếu trong URL tương đối. Ví dụ

delftstack.com/code= HOW TO Articles
2

Đối số allow_fragments có cùng ý nghĩa và mặc định như đối với

delftstack.com/code= HOW TO Articles
589

Ghi chú

Nếu url là một URL tuyệt đối [nghĩa là url bắt đầu bằng

delftstack.com/code= HOW TO Articles
125 hoặc
delftstack.com/code= HOW TO Articles
126], thì tên máy chủ và/hoặc lược đồ của url sẽ xuất hiện trong kết quả. Ví dụ

delftstack.com/code= HOW TO Articles
3

Nếu bạn không muốn hành vi đó, hãy xử lý trước url bằng

delftstack.com/code= HOW TO Articles
123 và
delftstack.com/code= HOW TO Articles
128, loại bỏ các phần sơ đồ và netloc có thể có

Đã thay đổi trong phiên bản 3. 5. Hành vi được cập nhật để phù hợp với ngữ nghĩa được xác định trong RFC 3986.

urllib. phân tích cú pháp. urldefrag[url]

Nếu url chứa số nhận dạng đoạn, hãy trả về phiên bản đã sửa đổi của url không có số nhận dạng đoạn và số nhận dạng đoạn dưới dạng một chuỗi riêng biệt. Nếu không có định danh phân đoạn trong url, hãy trả về url chưa sửa đổi và một chuỗi trống

Giá trị trả về là một bộ có tên , các mục của nó có thể được truy cập theo chỉ mục hoặc dưới dạng thuộc tính được đặt tên.

Thuộc tính

Mục lục

Giá trị

Giá trị nếu không có mặt

delftstack.com/code= HOW TO Articles
129

0

URL không có đoạn

chuỗi rỗng

import urllib.parse
url = 'delftstack.com/code=%20HOW%20TO%20Articles'
x = urllib.parse.unquote[url]
print[x]
18

1

mã định danh đoạn

chuỗi rỗng

Xem phần Kết quả phân tích cú pháp có cấu trúc để biết thêm thông tin về đối tượng kết quả.

Đã thay đổi trong phiên bản 3. 2. Kết quả là một đối tượng có cấu trúc chứ không phải là một bộ 2 đơn giản.

urllib. phân tích cú pháp. mở gói[url]

Trích xuất url từ một URL được bao bọc [nghĩa là một chuỗi có định dạng là

delftstack.com/code= HOW TO Articles
131,
delftstack.com/code= HOW TO Articles
132,
delftstack.com/code= HOW TO Articles
133 hoặc
delftstack.com/code= HOW TO Articles
134]. Nếu url không phải là một URL được bọc, nó sẽ được trả lại mà không có thay đổi

Phân tích cú pháp các byte được mã hóa ASCII¶

Các chức năng phân tích cú pháp URL ban đầu được thiết kế để chỉ hoạt động trên các chuỗi ký tự. Trong thực tế, sẽ rất hữu ích khi có thể thao tác các URL được trích dẫn và mã hóa đúng cách dưới dạng các chuỗi byte ASCII. Theo đó, các chức năng phân tích cú pháp URL trong mô-đun này đều hoạt động trên các đối tượng

delftstack.com/code= HOW TO Articles
135 và
delftstack.com/code= HOW TO Articles
136 ngoài các đối tượng
delftstack.com/code= HOW TO Articles
137

Nếu dữ liệu

delftstack.com/code= HOW TO Articles
137 được chuyển vào, kết quả cũng sẽ chỉ chứa dữ liệu
delftstack.com/code= HOW TO Articles
137. Nếu dữ liệu
delftstack.com/code= HOW TO Articles
135 hoặc
delftstack.com/code= HOW TO Articles
136 được chuyển vào, kết quả sẽ chỉ chứa dữ liệu
delftstack.com/code= HOW TO Articles
135

Cố gắng trộn dữ liệu

delftstack.com/code= HOW TO Articles
137 với
delftstack.com/code= HOW TO Articles
135 hoặc
delftstack.com/code= HOW TO Articles
136 trong một lệnh gọi hàm duy nhất sẽ dẫn đến một
delftstack.com/code= HOW TO Articles
146 được nâng lên, trong khi cố gắng chuyển các giá trị byte không phải ASCII sẽ kích hoạt
delftstack.com/code= HOW TO Articles
147

Để hỗ trợ việc chuyển đổi các đối tượng kết quả dễ dàng hơn giữa

delftstack.com/code= HOW TO Articles
137 và
delftstack.com/code= HOW TO Articles
135, tất cả các giá trị trả về từ các hàm phân tích cú pháp URL đều cung cấp phương thức
delftstack.com/code= HOW TO Articles
150 [khi kết quả chứa dữ liệu
delftstack.com/code= HOW TO Articles
137] hoặc phương thức
delftstack.com/code= HOW TO Articles
152 [khi kết quả chứa dữ liệu
delftstack.com/code= HOW TO Articles
135]. Chữ ký của các phương thức này khớp với chữ ký của các phương thức
delftstack.com/code= HOW TO Articles
137 và
delftstack.com/code= HOW TO Articles
135 tương ứng [ngoại trừ mã hóa mặc định là
delftstack.com/code= HOW TO Articles
156 thay vì
delftstack.com/code= HOW TO Articles
157]. Mỗi giá trị tạo ra một giá trị thuộc loại tương ứng chứa dữ liệu
delftstack.com/code= HOW TO Articles
135 [đối với phương pháp
delftstack.com/code= HOW TO Articles
150] hoặc dữ liệu
delftstack.com/code= HOW TO Articles
137 [đối với phương pháp
delftstack.com/code= HOW TO Articles
152]

Các ứng dụng cần hoạt động trên các URL có khả năng được trích dẫn không chính xác có thể chứa dữ liệu không phải ASCII sẽ cần thực hiện giải mã riêng từ byte thành ký tự trước khi gọi các phương pháp phân tích cú pháp URL

Hành vi được mô tả trong phần này chỉ áp dụng cho các chức năng phân tích cú pháp URL. Các hàm trích dẫn URL sử dụng các quy tắc riêng của chúng khi tạo hoặc sử dụng các chuỗi byte như được trình bày chi tiết trong tài liệu về các hàm trích dẫn URL riêng lẻ

Đã thay đổi trong phiên bản 3. 2. Chức năng phân tích cú pháp URL hiện chấp nhận chuỗi byte được mã hóa ASCII

Kết quả phân tích cấu trúc¶

Các đối tượng kết quả từ các hàm

delftstack.com/code= HOW TO Articles
589,
delftstack.com/code= HOW TO Articles
123 và
delftstack.com/code= HOW TO Articles
164 là các lớp con của loại
delftstack.com/code= HOW TO Articles
165. Các lớp con này thêm các thuộc tính được liệt kê trong tài liệu cho các chức năng đó, hỗ trợ mã hóa và giải mã được mô tả trong phần trước, cũng như một phương pháp bổ sung

urllib. phân tích cú pháp. Chia kết quả. geturl[]

Trả lại phiên bản được kết hợp lại của URL gốc dưới dạng chuỗi. Điều này có thể khác với URL ban đầu ở chỗ lược đồ có thể được chuẩn hóa thành chữ thường và các thành phần trống có thể bị loại bỏ. Cụ thể, các tham số trống, truy vấn và mã định danh đoạn sẽ bị xóa

Đối với kết quả

delftstack.com/code= HOW TO Articles
164, chỉ các mã định danh phân đoạn trống sẽ bị xóa. Đối với kết quả
delftstack.com/code= HOW TO Articles
123 và
delftstack.com/code= HOW TO Articles
589, tất cả các thay đổi được lưu ý sẽ được thực hiện đối với URL được phương thức này trả về

Kết quả của phương pháp này không thay đổi nếu được trả lại thông qua chức năng phân tích cú pháp ban đầu

delftstack.com/code= HOW TO Articles
2

Các lớp sau đây cung cấp việc triển khai kết quả phân tích cú pháp có cấu trúc khi hoạt động trên các đối tượng

delftstack.com/code= HOW TO Articles
137

lớp urllib. phân tích cú pháp. DefragResult[url , đoạn]

Lớp bê tông cho kết quả

delftstack.com/code= HOW TO Articles
164 chứa dữ liệu
delftstack.com/code= HOW TO Articles
137. Phương thức
delftstack.com/code= HOW TO Articles
150 trả về một thể hiện
delftstack.com/code= HOW TO Articles
173

Mới trong phiên bản 3. 2

lớp urllib. phân tích cú pháp. ParseResult[lược đồ , netloc, path, params, query, fragment]

Lớp bê tông cho kết quả

delftstack.com/code= HOW TO Articles
589 chứa dữ liệu
delftstack.com/code= HOW TO Articles
137. Phương thức
delftstack.com/code= HOW TO Articles
150 trả về một thể hiện
delftstack.com/code= HOW TO Articles
177

lớp urllib. phân tích cú pháp. SplitResult[sơ đồ , netloc, path, query, fragment]

Lớp bê tông cho kết quả

delftstack.com/code= HOW TO Articles
123 chứa dữ liệu
delftstack.com/code= HOW TO Articles
137. Phương thức
delftstack.com/code= HOW TO Articles
150 trả về một thể hiện
delftstack.com/code= HOW TO Articles
181

Các lớp sau đây cung cấp việc triển khai các kết quả phân tích cú pháp khi hoạt động trên các đối tượng

delftstack.com/code= HOW TO Articles
135 hoặc
delftstack.com/code= HOW TO Articles
136

lớp urllib. phân tích cú pháp. DefragResultBytes[url , đoạn]

Lớp bê tông cho kết quả

delftstack.com/code= HOW TO Articles
164 chứa dữ liệu
delftstack.com/code= HOW TO Articles
135. Phương thức
delftstack.com/code= HOW TO Articles
152 trả về một thể hiện
delftstack.com/code= HOW TO Articles
187

Mới trong phiên bản 3. 2

lớp urllib. phân tích cú pháp. ParseResultBytes[lược đồ , netloc, path, params, query, fragment]

Lớp bê tông cho kết quả

delftstack.com/code= HOW TO Articles
589 chứa dữ liệu
delftstack.com/code= HOW TO Articles
135. Phương thức
delftstack.com/code= HOW TO Articles
152 trả về một thể hiện
delftstack.com/code= HOW TO Articles
191

Mới trong phiên bản 3. 2

lớp urllib. phân tích cú pháp. SplitResultBytes[lược đồ , netloc, path, query, fragment]

Lớp bê tông cho kết quả

delftstack.com/code= HOW TO Articles
123 chứa dữ liệu
delftstack.com/code= HOW TO Articles
135. Phương thức
delftstack.com/code= HOW TO Articles
152 trả về một thể hiện
delftstack.com/code= HOW TO Articles
195

Mới trong phiên bản 3. 2

Trích dẫn URL¶

Các chức năng trích dẫn URL tập trung vào việc lấy dữ liệu chương trình và đảm bảo an toàn khi sử dụng làm thành phần URL bằng cách trích dẫn các ký tự đặc biệt và mã hóa thích hợp văn bản không phải ASCII. Chúng cũng hỗ trợ đảo ngược các thao tác này để tạo lại dữ liệu gốc từ nội dung của một thành phần URL nếu tác vụ đó chưa được các chức năng phân tích cú pháp URL ở trên bao phủ

urllib. phân tích cú pháp. trích dẫn[chuỗi , an toàn='/', encoding=None, errors=None]

Thay thế các ký tự đặc biệt trong chuỗi bằng cách sử dụng thoát

delftstack.com/code= HOW TO Articles
196. Chữ cái, chữ số và ký tự
delftstack.com/code= HOW TO Articles
197 không bao giờ được trích dẫn. Theo mặc định, hàm này dùng để trích dẫn phần đường dẫn của URL. Tham số an toàn tùy chọn chỉ định các ký tự ASCII bổ sung không được trích dẫn — giá trị mặc định của nó là
delftstack.com/code= HOW TO Articles
198

chuỗi có thể là một đối tượng

delftstack.com/code= HOW TO Articles
137 hoặc một đối tượng
delftstack.com/code= HOW TO Articles
135

Đã thay đổi trong phiên bản 3. 7. Đã chuyển từ RFC 2396 sang RFC 3986 để trích dẫn chuỗi URL. “~” hiện được bao gồm trong tập hợp các ký tự không được đặt trước.

Các tham số mã hóa và lỗi tùy chọn chỉ định cách xử lý các ký tự không phải ASCII, như được chấp nhận bởi phương thức

delftstack.com/code= HOW TO Articles
101. mã hóa mặc định thành
delftstack.com/code= HOW TO Articles
157. lỗi mặc định là
delftstack.com/code= HOW TO Articles
103, nghĩa là các ký tự không được hỗ trợ sẽ tăng
delftstack.com/code= HOW TO Articles
104. mã hóa và lỗi không được cung cấp nếu chuỗi là một
delftstack.com/code= HOW TO Articles
135 hoặc một
delftstack.com/code= HOW TO Articles
146 được nâng lên

Lưu ý rằng

delftstack.com/code= HOW TO Articles
107 tương đương với
delftstack.com/code= HOW TO Articles
108

Thí dụ.

delftstack.com/code= HOW TO Articles
109 sản lượng
delftstack.com/code= HOW TO Articles
110

urllib. phân tích cú pháp. quote_plus[chuỗi , an toàn='', encoding=None, errors=None]

Giống như

delftstack.com/code= HOW TO Articles
111, nhưng cũng thay thế khoảng trắng bằng dấu cộng, như được yêu cầu để trích dẫn các giá trị biểu mẫu HTML khi xây dựng chuỗi truy vấn để đi vào URL. Các dấu cộng trong chuỗi gốc được thoát trừ khi chúng được đưa vào an toàn. Nó cũng không có mặc định an toàn là
delftstack.com/code= HOW TO Articles
198

Thí dụ.

delftstack.com/code= HOW TO Articles
113 sản lượng
delftstack.com/code= HOW TO Articles
114

urllib. phân tích cú pháp. quote_from_bytes[byte , an toàn='/']

Giống như

delftstack.com/code= HOW TO Articles
111, nhưng chấp nhận đối tượng
delftstack.com/code= HOW TO Articles
135 thay vì
delftstack.com/code= HOW TO Articles
137 và không thực hiện mã hóa chuỗi thành byte

Thí dụ.

delftstack.com/code= HOW TO Articles
118 sản lượng
delftstack.com/code= HOW TO Articles
119

urllib. phân tích cú pháp. bỏ trích dẫn[chuỗi , mã hóa='utf-8', errors='replace']

Thay thế các lần thoát

delftstack.com/code= HOW TO Articles
196 bằng ký tự đơn tương đương của chúng. Các tham số mã hóa và lỗi tùy chọn chỉ định cách giải mã các chuỗi được mã hóa theo phần trăm thành các ký tự Unicode, như được chấp nhận bởi phương thức
delftstack.com/code= HOW TO Articles
600

chuỗi có thể là một đối tượng

delftstack.com/code= HOW TO Articles
137 hoặc một đối tượng
delftstack.com/code= HOW TO Articles
135

mã hóa mặc định thành

delftstack.com/code= HOW TO Articles
157. lỗi mặc định là
delftstack.com/code= HOW TO Articles
125, nghĩa là các chuỗi không hợp lệ được thay thế bằng một ký tự giữ chỗ

Thí dụ.

delftstack.com/code= HOW TO Articles
126 sản lượng
delftstack.com/code= HOW TO Articles
127

Đã thay đổi trong phiên bản 3. 9. tham số chuỗi hỗ trợ các đối tượng byte và str [trước đây chỉ có str].

urllib. phân tích cú pháp. unquote_plus[chuỗi , mã hóa='utf-8', errors='replace']

Giống như

delftstack.com/code= HOW TO Articles
128, nhưng cũng thay thế các dấu cộng bằng dấu cách, theo yêu cầu đối với các giá trị biểu mẫu HTML bỏ trích dẫn

chuỗi phải là một

delftstack.com/code= HOW TO Articles
137

Thí dụ.

delftstack.com/code= HOW TO Articles
130 sản lượng
delftstack.com/code= HOW TO Articles
127

urllib. phân tích cú pháp. unquote_to_bytes[chuỗi]

Thay thế các lần thoát

delftstack.com/code= HOW TO Articles
196 bằng một octet tương đương của chúng và trả về một đối tượng
delftstack.com/code= HOW TO Articles
135

chuỗi có thể là một đối tượng

delftstack.com/code= HOW TO Articles
137 hoặc một đối tượng
delftstack.com/code= HOW TO Articles
135

Nếu đó là

delftstack.com/code= HOW TO Articles
137, các ký tự không phải ASCII chưa thoát trong chuỗi được mã hóa thành byte UTF-8

Thí dụ.

delftstack.com/code= HOW TO Articles
137 sản lượng
delftstack.com/code= HOW TO Articles
138

urllib. phân tích cú pháp. urlencode[truy vấn , liều lượng=False, safe='', encoding=None, errors=None, quote_via=quote_plus]

Chuyển đổi một đối tượng ánh xạ hoặc một chuỗi các bộ hai phần tử, có thể chứa các đối tượng

delftstack.com/code= HOW TO Articles
137 hoặc
delftstack.com/code= HOW TO Articles
135, thành chuỗi văn bản ASCII được mã hóa theo phần trăm. Nếu chuỗi kết quả được sử dụng làm dữ liệu cho thao tác POST với hàm
delftstack.com/code= HOW TO Articles
141 thì chuỗi đó phải được mã hóa thành byte, nếu không nó sẽ dẫn đến kết quả là
delftstack.com/code= HOW TO Articles
146

Chuỗi kết quả là một chuỗi các cặp

delftstack.com/code= HOW TO Articles
143 được phân tách bằng ký tự
delftstack.com/code= HOW TO Articles
144, trong đó cả khóa và giá trị đều được trích dẫn bằng cách sử dụng hàm quote_via. Theo mặc định,
delftstack.com/code= HOW TO Articles
145 được sử dụng để trích dẫn các giá trị, nghĩa là dấu cách được trích dẫn dưới dạng ký tự
delftstack.com/code= HOW TO Articles
146 và ký tự '/' được mã hóa thành
delftstack.com/code= HOW TO Articles
147, tuân theo tiêu chuẩn cho yêu cầu GET [
delftstack.com/code= HOW TO Articles
148]. Một hàm thay thế có thể được truyền dưới dạng quote_via là
delftstack.com/code= HOW TO Articles
111, hàm này sẽ mã hóa khoảng trắng dưới dạng
delftstack.com/code= HOW TO Articles
150 và không mã hóa ký tự '/'. Để kiểm soát tối đa những gì được trích dẫn, hãy sử dụng
delftstack.com/code= HOW TO Articles
151 và chỉ định giá trị an toàn

Khi một chuỗi các bộ dữ liệu hai phần tử được sử dụng làm đối số truy vấn, phần tử đầu tiên của mỗi bộ dữ liệu là một khóa và phần tử thứ hai là một giá trị. Bản thân phần tử giá trị có thể là một chuỗi và trong trường hợp đó, nếu tham số tùy chọn liều lượng ước tính thành

delftstack.com/code= HOW TO Articles
605, các cặp
delftstack.com/code= HOW TO Articles
143 riêng lẻ được phân tách bằng
delftstack.com/code= HOW TO Articles
144 được tạo cho từng phần tử của chuỗi giá trị cho khóa. Thứ tự của các tham số trong chuỗi được mã hóa sẽ khớp với thứ tự của các bộ tham số trong chuỗi

Các tham số an toàn, mã hóa và lỗi được truyền xuống quote_via [các tham số mã hóa và lỗi chỉ được truyền khi phần tử truy vấn là

delftstack.com/code= HOW TO Articles
137]

Để đảo ngược quá trình mã hóa này, mô-đun này cung cấp

delftstack.com/code= HOW TO Articles
156 và
delftstack.com/code= HOW TO Articles
157 để phân tích chuỗi truy vấn thành cấu trúc dữ liệu Python

Tham khảo ví dụ urllib để tìm hiểu cách sử dụng phương thức

delftstack.com/code= HOW TO Articles
603 để tạo chuỗi truy vấn của URL hoặc dữ liệu cho POST .

Đã thay đổi trong phiên bản 3. 2. truy vấn hỗ trợ đối tượng byte và chuỗi.

Mới trong phiên bản 3. 5. thông số quote_via.

Xem thêm

WHATWG - URL Mức sống

Nhóm làm việc về Tiêu chuẩn URL xác định URL, tên miền, địa chỉ IP, định dạng ứng dụng/x-www-form-urlencoded và API của chúng

RFC 3986 - Mã định danh tài nguyên thống nhất

Đây là tiêu chuẩn hiện tại [STD66]. Mọi thay đổi đối với urllib. mô-đun phân tích cú pháp phải phù hợp với điều này. Có thể quan sát thấy một số sai lệch nhất định, chủ yếu là vì mục đích tương thích ngược và đối với một số yêu cầu phân tích cú pháp thực tế nhất định như thường thấy trong các trình duyệt chính

RFC 2732 - Định dạng cho địa chỉ IPv6 theo nghĩa đen trong URL

Điều này chỉ định các yêu cầu phân tích cú pháp của URL IPv6

RFC 2396 - Mã định danh tài nguyên thống nhất [URI]. Cú pháp chung

Tài liệu mô tả các yêu cầu cú pháp chung cho cả Tên tài nguyên đồng nhất [URN] và Bộ định vị tài nguyên đồng nhất [URL]

RFC 2368 - Lược đồ URL mailto

Yêu cầu phân tích cú pháp đối với lược đồ URL mailto

RFC 1808 - Bộ định vị tài nguyên thống nhất tương đối

Yêu cầu nhận xét này bao gồm các quy tắc để tham gia một URL tuyệt đối và tương đối, bao gồm một số lượng lớn "Ví dụ bất thường" chi phối việc xử lý các trường hợp biên giới

%2f có nghĩa là gì trong một URL?

Mã hóa URL chuyển đổi các ký tự thành định dạng có thể truyền qua Internet. - w3Schools. Vì vậy, "/" thực sự là một dấu phân cách, nhưng "%2f" trở thành một ký tự thông thường chỉ đại diện cho ký tự "/" trong phần tử url của bạn .

Tại sao lại là URL

Các URL chỉ có thể được gửi qua Internet bằng cách sử dụng bộ ký tự ASCII. Nếu một URL chứa các ký tự bên ngoài bộ ASCII, thì URL đó phải được chuyển đổi. Mã hóa URL chuyển đổi các ký tự không phải ASCII thành định dạng có thể truyền qua Internet .

Chủ Đề