Bây giờ hãy xem ví dụ về cách tìm url từ chuỗi trong python. Chúng ta sẽ nói về trích xuất url từ chuỗi bằng cách sử dụng mô-đun biểu thức chính quy của python. Tôi sẽ chia sẻ với bạn cách trích xuất url từ chuỗi bằng python
Chúng tôi có thể lấy một tệp đầu vào có chứa một số URL và xử lý nó thông qua chương trình sau để trích xuất các URL
Ở đây tôi sẽ cung cấp cho bạn ví dụ đơn giản về cách trích xuất url từ chuỗi trong ví dụ python, Vì vậy, hãy xem ví dụ bên dưới
Là một nhà phát triển Python, chúng tôi phải hoàn thành rất nhiều công việc như xóa dữ liệu khỏi tệp hoặc văn bản trước khi xử lý các hoạt động kinh doanh khác
Ví dụ: bạn có tệp văn bản dữ liệu thô hoặc chuỗi văn bản và bạn phải đọc một số dữ liệu cụ thể như URL bằng cách thực hiện khớp Biểu thức chính quy thực tế
Biểu thức chính quy là gì và mô-đun nào được sử dụng trong Python?
Biểu thức chính quy là một chuỗi [các] ký tự đặc biệt được sử dụng chủ yếu để tìm và thay thế các mẫu trong một chuỗi hoặc tệp, sử dụng một…
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 sơ đồ URL sau. file
, ftp
,
>>> from urllib.parse import urlparse >>> urlparse['//www.cwi.nl:80/%7Eguido/Python.html'] ParseResult[scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment=''] >>> urlparse['www.cwi.nl/%7Eguido/Python.html'] ParseResult[scheme='', netloc='', path='www.cwi.nl/%7Eguido/Python.html', params='', query='', fragment=''] >>> urlparse['help/Python.html'] ParseResult[scheme='', netloc='', path='help/Python.html', params='', query='', fragment='']0,
>>> from urllib.parse import urlparse >>> urlparse['//www.cwi.nl:80/%7Eguido/Python.html'] ParseResult[scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment=''] >>> urlparse['www.cwi.nl/%7Eguido/Python.html'] ParseResult[scheme='', netloc='', path='www.cwi.nl/%7Eguido/Python.html', params='', query='', fragment=''] >>> urlparse['help/Python.html'] ParseResult[scheme='', netloc='', path='help/Python.html', params='', query='', fragment='']1,
>>> from urllib.parse import urlparse >>> urlparse['//www.cwi.nl:80/%7Eguido/Python.html'] ParseResult[scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment=''] >>> urlparse['www.cwi.nl/%7Eguido/Python.html'] ParseResult[scheme='', netloc='', path='www.cwi.nl/%7Eguido/Python.html', params='', query='', fragment=''] >>> urlparse['help/Python.html'] ParseResult[scheme='', netloc='', path='help/Python.html', params='', query='', fragment='']2,
>>> from urllib.parse import urlparse >>> urlparse['//www.cwi.nl:80/%7Eguido/Python.html'] ParseResult[scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment=''] >>> urlparse['www.cwi.nl/%7Eguido/Python.html'] ParseResult[scheme='', netloc='', path='www.cwi.nl/%7Eguido/Python.html', params='', query='', fragment=''] >>> urlparse['help/Python.html'] ParseResult[scheme='', netloc='', path='help/Python.html', params='', query='', fragment='']3,
>>> from urllib.parse import urlparse >>> urlparse['//www.cwi.nl:80/%7Eguido/Python.html'] ParseResult[scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment=''] >>> urlparse['www.cwi.nl/%7Eguido/Python.html'] ParseResult[scheme='', netloc='', path='www.cwi.nl/%7Eguido/Python.html', params='', query='', fragment=''] >>> urlparse['help/Python.html'] ParseResult[scheme='', netloc='', path='help/Python.html', params='', query='', fragment='']4,
>>> from urllib.parse import urlparse >>> urlparse['//www.cwi.nl:80/%7Eguido/Python.html'] ParseResult[scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment=''] >>> urlparse['www.cwi.nl/%7Eguido/Python.html'] ParseResult[scheme='', netloc='', path='www.cwi.nl/%7Eguido/Python.html', params='', query='', fragment=''] >>> urlparse['help/Python.html'] ParseResult[scheme='', netloc='', path='help/Python.html', params='', query='', fragment='']5,
>>> from urllib.parse import urlparse >>> urlparse['//www.cwi.nl:80/%7Eguido/Python.html'] ParseResult[scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment=''] >>> urlparse['www.cwi.nl/%7Eguido/Python.html'] ParseResult[scheme='', netloc='', path='www.cwi.nl/%7Eguido/Python.html', params='', query='', fragment=''] >>> urlparse['help/Python.html'] ParseResult[scheme='', netloc='', path='help/Python.html', params='', query='', fragment='']6,
>>> from urllib.parse import urlparse >>> urlparse['//www.cwi.nl:80/%7Eguido/Python.html'] ParseResult[scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment=''] >>> urlparse['www.cwi.nl/%7Eguido/Python.html'] ParseResult[scheme='', netloc='', path='www.cwi.nl/%7Eguido/Python.html', params='', query='', fragment=''] >>> urlparse['help/Python.html'] ParseResult[scheme='', netloc='', path='help/Python.html', params='', query='', fragment='']7,
>>> from urllib.parse import urlparse >>> urlparse['//www.cwi.nl:80/%7Eguido/Python.html'] ParseResult[scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment=''] >>> urlparse['www.cwi.nl/%7Eguido/Python.html'] ParseResult[scheme='', netloc='', path='www.cwi.nl/%7Eguido/Python.html', params='', query='', fragment=''] >>> urlparse['help/Python.html'] ParseResult[scheme='', netloc='', path='help/Python.html', params='', query='', fragment='']8,
>>> from urllib.parse import urlparse >>> urlparse['//www.cwi.nl:80/%7Eguido/Python.html'] ParseResult[scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment=''] >>> urlparse['www.cwi.nl/%7Eguido/Python.html'] ParseResult[scheme='', netloc='', path='www.cwi.nl/%7Eguido/Python.html', params='', query='', fragment=''] >>> urlparse['help/Python.html'] ParseResult[scheme='', netloc='', path='help/Python.html', params='', query='', fragment='']9,
>>> from urllib.parse import urlparse >>> u = urlparse['//www.cwi.nl:80/%7Eguido/Python.html'] >>> u ParseResult[scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment=''] >>> u._replace[scheme='http'] ParseResult[scheme='http', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment='']0,
>>> from urllib.parse import urlparse >>> u = urlparse['//www.cwi.nl:80/%7Eguido/Python.html'] >>> u ParseResult[scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment=''] >>> u._replace[scheme='http'] ParseResult[scheme='http', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment='']1,
>>> from urllib.parse import urlparse >>> u = urlparse['//www.cwi.nl:80/%7Eguido/Python.html'] >>> u ParseResult[scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment=''] >>> u._replace[scheme='http'] ParseResult[scheme='http', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment='']2,
>>> from urllib.parse import urlparse >>> u = urlparse['//www.cwi.nl:80/%7Eguido/Python.html'] >>> u ParseResult[scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment=''] >>> u._replace[scheme='http'] ParseResult[scheme='http', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment='']3,
>>> from urllib.parse import urlparse >>> u = urlparse['//www.cwi.nl:80/%7Eguido/Python.html'] >>> u ParseResult[scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment=''] >>> u._replace[scheme='http'] ParseResult[scheme='http', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment='']4,
>>> from urllib.parse import urlparse >>> u = urlparse['//www.cwi.nl:80/%7Eguido/Python.html'] >>> u ParseResult[scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment=''] >>> u._replace[scheme='http'] ParseResult[scheme='http', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment='']5,
>>> from urllib.parse import urlparse >>> u = urlparse['//www.cwi.nl:80/%7Eguido/Python.html'] >>> u ParseResult[scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment=''] >>> u._replace[scheme='http'] ParseResult[scheme='http', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment='']6,
>>> from urllib.parse import urlparse >>> u = urlparse['//www.cwi.nl:80/%7Eguido/Python.html'] >>> u ParseResult[scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment=''] >>> u._replace[scheme='http'] ParseResult[scheme='http', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment='']7,
>>> from urllib.parse import urlparse >>> u = urlparse['//www.cwi.nl:80/%7Eguido/Python.html'] >>> u ParseResult[scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment=''] >>> u._replace[scheme='http'] ParseResult[scheme='http', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment='']8,
>>> from urllib.parse import urlparse >>> u = urlparse['//www.cwi.nl:80/%7Eguido/Python.html'] >>> u ParseResult[scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment=''] >>> u._replace[scheme='http'] ParseResult[scheme='http', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment='']9,
[addressing scheme, network location, path, query, fragment identifier].0,
[addressing scheme, network location, path, query, fragment identifier].1,
[addressing scheme, network location, path, query, fragment identifier].2,
Mô-đun 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 cú pháp 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ề 6 mục. Điều này tương ứng với cấu trúc chung của một URL.
[addressing scheme, network location, path, query, fragment identifier].5. 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ụ
>>> from urllib.parse import urlparse >>> urlparse["scheme://netloc/path;parameters?query#fragment"] ParseResult[scheme='scheme', netloc='netloc', path='/path;parameters', params='', query='query', fragment='fragment'] >>> o = urlparse["//docs.python.org:80/3/library/urllib.parse.html?" .. "highlight=params#url-parsing"] >>> o ParseResult[scheme='http', netloc='docs.python.org:80', path='/3/library/urllib.parse.html', params='', query='highlight=params', fragment='url-parsing'] >>> o.scheme 'http' >>> o.netloc 'docs.python.org:80' >>> o.hostname 'docs.python.org' >>> o.port 80 >>> o._replace[fragment=""].geturl[] '//docs.python.org:80/3/library/urllib.parse.html?highlight=params'
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
>>> from urllib.parse import urlparse >>> urlparse['//www.cwi.nl:80/%7Eguido/Python.html'] ParseResult[scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment=''] >>> urlparse['www.cwi.nl/%7Eguido/Python.html'] ParseResult[scheme='', netloc='', path='www.cwi.nl/%7Eguido/Python.html', params='', query='', fragment=''] >>> urlparse['help/Python.html'] ParseResult[scheme='', netloc='', path='help/Python.html', params='', query='', fragment='']
Đố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
[addressing scheme, network location, path, query, fragment identifier].6 luôn được cho phép và được tự động chuyển đổi thành
[addressing scheme, network location, path, query, fragment identifier].7 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à
[addressing scheme, network location, path, query, fragment identifier].8 được đặt thành chuỗi trống trong giá trị trả về
Giá trị trả về là a , 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 thuộc tính được đặt tên, đó là
Thuộc tính
Mục lục
Giá trị
Giá trị nếu không có mặt
[addressing scheme, network location, path, query, fragment identifier].9
0
Trình xác định lược đồ URL
tham số sơ đồ
>>> from urllib.parse import urljoin >>> urljoin['//www.cwi.nl/%7Eguido/Python.html', 'FAQ.html'] '//www.cwi.nl/%7Eguido/FAQ.html'0
1
Phần vị trí mạng
chuỗi rỗng
>>> from urllib.parse import urljoin >>> urljoin['//www.cwi.nl/%7Eguido/Python.html', 'FAQ.html'] '//www.cwi.nl/%7Eguido/FAQ.html'1
2
đường dẫn phân cấp
chuỗi rỗng
>>> from urllib.parse import urljoin >>> urljoin['//www.cwi.nl/%7Eguido/Python.html', 'FAQ.html'] '//www.cwi.nl/%7Eguido/FAQ.html'2
3
Tham số cho phần tử đường dẫn cuối cùng
chuỗi rỗng
>>> from urllib.parse import urljoin >>> urljoin['//www.cwi.nl/%7Eguido/Python.html', 'FAQ.html'] '//www.cwi.nl/%7Eguido/FAQ.html'3
4
thành phần truy vấn
chuỗi rỗng
[addressing scheme, network location, path, query, fragment identifier].8
5
mã định danh đoạn
chuỗi rỗng
>>> from urllib.parse import urljoin >>> urljoin['//www.cwi.nl/%7Eguido/Python.html', 'FAQ.html'] '//www.cwi.nl/%7Eguido/FAQ.html'5
Tên tài khoản
>>> from urllib.parse import urljoin >>> urljoin['//www.cwi.nl/%7Eguido/Python.html', 'FAQ.html'] '//www.cwi.nl/%7Eguido/FAQ.html'7
Mật khẩu
>>> from urllib.parse import urljoin >>> urljoin['//www.cwi.nl/%7Eguido/Python.html', 'FAQ.html'] '//www.cwi.nl/%7Eguido/FAQ.html'9
Tên máy chủ [viết thường]
>>> urljoin['//www.cwi.nl/%7Eguido/Python.html', .. '//www.python.org/%7Eguido'] '//www.python.org/%7Eguido'1
Số cổng là số nguyên, nếu có
Đọc thuộc tính
>>> urljoin['//www.cwi.nl/%7Eguido/Python.html', .. '//www.python.org/%7Eguido'] '//www.python.org/%7Eguido'1 sẽ tăng nếu một cổng không hợp lệ được chỉ định trong URL. Xem phần để biết thêm thông tin về đối tượng kết quả
Dấu ngoặc vuông không khớp trong thuộc tính
>>> from urllib.parse import urljoin >>> urljoin['//www.cwi.nl/%7Eguido/Python.html', 'FAQ.html'] '//www.cwi.nl/%7Eguido/FAQ.html'0 sẽ tăng
Các ký tự trong thuộc tính
>>> from urllib.parse import urljoin >>> urljoin['//www.cwi.nl/%7Eguido/Python.html', 'FAQ.html'] '//www.cwi.nl/%7Eguido/FAQ.html'0 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ố
>>> urljoin['//www.cwi.nl/%7Eguido/Python.html', .. '//www.python.org/%7Eguido'] '//www.python.org/%7Eguido'8,
>>> urljoin['//www.cwi.nl/%7Eguido/Python.html', .. '//www.python.org/%7Eguido'] '//www.python.org/%7Eguido'9,
>>> from urllib.parse import urlsplit >>> url = '//www.Python.org/doc/#' >>> r1 = urlsplit[url] >>> r1.geturl[] '//www.Python.org/doc/' >>> r2 = urlsplit[r1.geturl[]] >>> r2.geturl[] '//www.Python.org/doc/'0,
>>> from urllib.parse import urlsplit >>> url = '//www.Python.org/doc/#' >>> r1 = urlsplit[url] >>> r1.geturl[] '//www.Python.org/doc/' >>> r2 = urlsplit[r1.geturl[]] >>> r2.geturl[] '//www.Python.org/doc/'1 hoặc
>>> from urllib.parse import urlsplit >>> url = '//www.Python.org/doc/#' >>> r1 = urlsplit[url] >>> r1.geturl[] '//www.Python.org/doc/' >>> r2 = urlsplit[r1.geturl[]] >>> r2.geturl[] '//www.Python.org/doc/'2 sẽ tăng. 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à
>>> from urllib.parse import urlsplit >>> url = '//www.Python.org/doc/#' >>> r1 = urlsplit[url] >>> r1.geturl[] '//www.Python.org/doc/' >>> r2 = urlsplit[r1.geturl[]] >>> r2.geturl[] '//www.Python.org/doc/'4. Phương thức
>>> from urllib.parse import urlsplit >>> url = '//www.Python.org/doc/#' >>> r1 = urlsplit[url] >>> r1.geturl[] '//www.Python.org/doc/' >>> r2 = urlsplit[r1.geturl[]] >>> r2.geturl[] '//www.Python.org/doc/'4 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
>>> from urllib.parse import urlparse >>> u = urlparse['//www.cwi.nl:80/%7Eguido/Python.html'] >>> u ParseResult[scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment=''] >>> u._replace[scheme='http'] ParseResult[scheme='http', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment='']
Đã 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 , thay vì trả về.
Đã 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 lên.
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ẽ đưa ra một ngoại lệ
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 phương thức chấp nhận
Đố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 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à urllib.parse
2
Sử dụng hàm [với tham số urllib.parse
4 được đặt thành urllib.parse
5] để 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à urllib.parse
2. Các phiên bản Python sớm hơn Python 3. 10 được phép sử dụng cả urllib.parse
7 và urllib.parse
2 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 dấu phân cách duy nhất, với ____131_______2 làm dấu phân cách mặc định.
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ẽ đưa ra một ngoại lệ
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 phương thức chấp nhận
Đố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 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à urllib.parse
2
Sử dụng hàm để 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à urllib.parse
2. Các phiên bản Python sớm hơn Python 3. 10 được phép sử dụng cả urllib.parse
7 và urllib.parse
2 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 dấu phân cách duy nhất, với ____131_______2 làm dấu phân cách mặc định.
Tạo một URL từ một tuple như được trả về bởi file
9. Đố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ụ:
>>> urljoin['//www.cwi.nl/%7Eguido/Python.html', .. '//www.python.org/%7Eguido'] '//www.python.org/%7Eguido'9 với một truy vấn trống; RFC tuyên bố rằng những 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ư, nhưng không tách các tham số khỏi URL. Điều này thường được sử dụng thay vì nếu 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] là cần thiết. 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ề 5 mục
[addressing scheme, network location, path, query, fragment identifier].
Giá trị trả về là a , 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
[addressing scheme, network location, path, query, fragment identifier].9
0
Trình xác định lược đồ URL
tham số sơ đồ
>>> from urllib.parse import urljoin >>> urljoin['//www.cwi.nl/%7Eguido/Python.html', 'FAQ.html'] '//www.cwi.nl/%7Eguido/FAQ.html'0
1
Phần vị trí mạng
chuỗi rỗng
>>> from urllib.parse import urljoin >>> urljoin['//www.cwi.nl/%7Eguido/Python.html', 'FAQ.html'] '//www.cwi.nl/%7Eguido/FAQ.html'1
2
đường dẫn phân cấp
chuỗi rỗng
>>> from urllib.parse import urljoin >>> urljoin['//www.cwi.nl/%7Eguido/Python.html', 'FAQ.html'] '//www.cwi.nl/%7Eguido/FAQ.html'3
3
thành phần truy vấn
chuỗi rỗng
[addressing scheme, network location, path, query, fragment identifier].8
4
mã định danh đoạn
chuỗi rỗng
>>> from urllib.parse import urljoin >>> urljoin['//www.cwi.nl/%7Eguido/Python.html', 'FAQ.html'] '//www.cwi.nl/%7Eguido/FAQ.html'5
Tên tài khoản
>>> from urllib.parse import urljoin >>> urljoin['//www.cwi.nl/%7Eguido/Python.html', 'FAQ.html'] '//www.cwi.nl/%7Eguido/FAQ.html'7
Mật khẩu
>>> from urllib.parse import urljoin >>> urljoin['//www.cwi.nl/%7Eguido/Python.html', 'FAQ.html'] '//www.cwi.nl/%7Eguido/FAQ.html'9
Tên máy chủ [viết thường]
>>> urljoin['//www.cwi.nl/%7Eguido/Python.html', .. '//www.python.org/%7Eguido'] '//www.python.org/%7Eguido'1
Số cổng là số nguyên, nếu có
Đọc thuộc tính
>>> urljoin['//www.cwi.nl/%7Eguido/Python.html', .. '//www.python.org/%7Eguido'] '//www.python.org/%7Eguido'1 sẽ tăng nếu một cổng không hợp lệ được chỉ định trong URL. Xem phần để biết thêm thông tin về đối tượng kết quả
Dấu ngoặc vuông không khớp trong thuộc tính
>>> from urllib.parse import urljoin >>> urljoin['//www.cwi.nl/%7Eguido/Python.html', 'FAQ.html'] '//www.cwi.nl/%7Eguido/FAQ.html'0 sẽ tăng
Các ký tự trong thuộc tính
>>> from urllib.parse import urljoin >>> urljoin['//www.cwi.nl/%7Eguido/Python.html', 'FAQ.html'] '//www.cwi.nl/%7Eguido/FAQ.html'0 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ố
>>> urljoin['//www.cwi.nl/%7Eguido/Python.html', .. '//www.python.org/%7Eguido'] '//www.python.org/%7Eguido'8,
>>> urljoin['//www.cwi.nl/%7Eguido/Python.html', .. '//www.python.org/%7Eguido'] '//www.python.org/%7Eguido'9,
>>> from urllib.parse import urlsplit >>> url = '//www.Python.org/doc/#' >>> r1 = urlsplit[url] >>> r1.geturl[] '//www.Python.org/doc/' >>> r2 = urlsplit[r1.geturl[]] >>> r2.geturl[] '//www.Python.org/doc/'0,
>>> from urllib.parse import urlsplit >>> url = '//www.Python.org/doc/#' >>> r1 = urlsplit[url] >>> r1.geturl[] '//www.Python.org/doc/' >>> r2 = urlsplit[r1.geturl[]] >>> r2.geturl[] '//www.Python.org/doc/'1 hoặc
>>> from urllib.parse import urlsplit >>> url = '//www.Python.org/doc/#' >>> r1 = urlsplit[url] >>> r1.geturl[] '//www.Python.org/doc/' >>> r2 = urlsplit[r1.geturl[]] >>> r2.geturl[] '//www.Python.org/doc/'2 sẽ tăng. 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
Sau bản cập nhật RFC 3986, các ký tự xuống dòng ASCII _______17, _________18 và tab _________19 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 , thay vì trả về.
Đã 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 lên.
Đã 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ộ như được trả về bởi 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ụ
>>> from urllib.parse import urljoin >>> urljoin['//www.cwi.nl/%7Eguido/Python.html', 'FAQ.html'] '//www.cwi.nl/%7Eguido/FAQ.html'
Đối số allow_fragments có cùng ý nghĩa và mặc định như đối với
Ghi chú
Nếu url là một URL tuyệt đối [nghĩa là url bắt đầu bằng
>>> from urllib.parse import urlparse >>> urlparse['//www.cwi.nl:80/%7Eguido/Python.html'] ParseResult[scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment=''] >>> urlparse['www.cwi.nl/%7Eguido/Python.html'] ParseResult[scheme='', netloc='', path='www.cwi.nl/%7Eguido/Python.html', params='', query='', fragment=''] >>> urlparse['help/Python.html'] ParseResult[scheme='', netloc='', path='help/Python.html', params='', query='', fragment='']25 hoặc
>>> from urllib.parse import urlparse >>> urlparse['//www.cwi.nl:80/%7Eguido/Python.html'] ParseResult[scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment=''] >>> urlparse['www.cwi.nl/%7Eguido/Python.html'] ParseResult[scheme='', netloc='', path='www.cwi.nl/%7Eguido/Python.html', params='', query='', fragment=''] >>> urlparse['help/Python.html'] ParseResult[scheme='', netloc='', path='help/Python.html', params='', query='', fragment='']26], 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ụ
>>> urljoin['//www.cwi.nl/%7Eguido/Python.html', .. '//www.python.org/%7Eguido'] '//www.python.org/%7Eguido'
Nếu bạn không muốn hành vi đó, hãy xử lý trước url bằng và , 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à a , 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
>>> from urllib.parse import urlparse >>> urlparse['//www.cwi.nl:80/%7Eguido/Python.html'] ParseResult[scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment=''] >>> urlparse['www.cwi.nl/%7Eguido/Python.html'] ParseResult[scheme='', netloc='', path='www.cwi.nl/%7Eguido/Python.html', params='', query='', fragment=''] >>> urlparse['help/Python.html'] ParseResult[scheme='', netloc='', path='help/Python.html', params='', query='', fragment='']29
0
URL không có đoạn
chuỗi rỗng
[addressing scheme, network location, path, query, fragment identifier].8
1
mã định danh đoạn
chuỗi rỗng
Xem phần để 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à
>>> from urllib.parse import urlparse >>> urlparse['//www.cwi.nl:80/%7Eguido/Python.html'] ParseResult[scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment=''] >>> urlparse['www.cwi.nl/%7Eguido/Python.html'] ParseResult[scheme='', netloc='', path='www.cwi.nl/%7Eguido/Python.html', params='', query='', fragment=''] >>> urlparse['help/Python.html'] ParseResult[scheme='', netloc='', path='help/Python.html', params='', query='', fragment='']31,
>>> from urllib.parse import urlparse >>> urlparse['//www.cwi.nl:80/%7Eguido/Python.html'] ParseResult[scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment=''] >>> urlparse['www.cwi.nl/%7Eguido/Python.html'] ParseResult[scheme='', netloc='', path='www.cwi.nl/%7Eguido/Python.html', params='', query='', fragment=''] >>> urlparse['help/Python.html'] ParseResult[scheme='', netloc='', path='help/Python.html', params='', query='', fragment='']32,
>>> from urllib.parse import urlparse >>> urlparse['//www.cwi.nl:80/%7Eguido/Python.html'] ParseResult[scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment=''] >>> urlparse['www.cwi.nl/%7Eguido/Python.html'] ParseResult[scheme='', netloc='', path='www.cwi.nl/%7Eguido/Python.html', params='', query='', fragment=''] >>> urlparse['help/Python.html'] ParseResult[scheme='', netloc='', path='help/Python.html', params='', query='', fragment='']33 hoặc
>>> from urllib.parse import urlparse >>> urlparse['//www.cwi.nl:80/%7Eguido/Python.html'] ParseResult[scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment=''] >>> urlparse['www.cwi.nl/%7Eguido/Python.html'] ParseResult[scheme='', netloc='', path='www.cwi.nl/%7Eguido/Python.html', params='', query='', fragment=''] >>> urlparse['help/Python.html'] ParseResult[scheme='', netloc='', path='help/Python.html', params='', query='', fragment='']34]. 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 đối tượng và đối tượng ngoài đối tượng
Nếu dữ liệu được truyền vào, kết quả cũng sẽ chỉ chứa dữ liệu. Nếu hoặc dữ liệu được truyền vào, kết quả sẽ chỉ chứa dữ liệu
Việc cố gắng trộn dữ liệu với hoặc trong một lệnh gọi hàm đơn lẻ sẽ dẫn đến việc tăng giá trị, trong khi việc cố gắng chuyển các giá trị byte không phải ASCII sẽ kích hoạt
Để hỗ trợ chuyển đổi dễ dàng hơn các đối tượng kết quả giữa và , tất cả các giá trị trả về từ hàm phân tích cú pháp URL đều cung cấp phương thức
>>> from urllib.parse import urlparse >>> urlparse['//www.cwi.nl:80/%7Eguido/Python.html'] ParseResult[scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment=''] >>> urlparse['www.cwi.nl/%7Eguido/Python.html'] ParseResult[scheme='', netloc='', path='www.cwi.nl/%7Eguido/Python.html', params='', query='', fragment=''] >>> urlparse['help/Python.html'] ParseResult[scheme='', netloc='', path='help/Python.html', params='', query='', fragment='']50 [khi kết quả chứa dữ liệu] hoặc phương thức
>>> from urllib.parse import urlparse >>> urlparse['//www.cwi.nl:80/%7Eguido/Python.html'] ParseResult[scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment=''] >>> urlparse['www.cwi.nl/%7Eguido/Python.html'] ParseResult[scheme='', netloc='', path='www.cwi.nl/%7Eguido/Python.html', params='', query='', fragment=''] >>> urlparse['help/Python.html'] ParseResult[scheme='', netloc='', path='help/Python.html', params='', query='', fragment='']52 [khi kết quả chứa dữ liệu]. 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 và phương thức tương ứng [ngoại trừ việc mã hóa mặc định là
>>> from urllib.parse import urlparse >>> urlparse['//www.cwi.nl:80/%7Eguido/Python.html'] ParseResult[scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment=''] >>> urlparse['www.cwi.nl/%7Eguido/Python.html'] ParseResult[scheme='', netloc='', path='www.cwi.nl/%7Eguido/Python.html', params='', query='', fragment=''] >>> urlparse['help/Python.html'] ParseResult[scheme='', netloc='', path='help/Python.html', params='', query='', fragment='']56 thay vì
>>> from urllib.parse import urlparse >>> urlparse['//www.cwi.nl:80/%7Eguido/Python.html'] ParseResult[scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment=''] >>> urlparse['www.cwi.nl/%7Eguido/Python.html'] ParseResult[scheme='', netloc='', path='www.cwi.nl/%7Eguido/Python.html', params='', query='', fragment=''] >>> urlparse['help/Python.html'] ParseResult[scheme='', netloc='', path='help/Python.html', params='', query='', fragment='']57]. Mỗi giá trị tạo ra một giá trị thuộc loại tương ứng có chứa dữ liệu [đối với phương pháp
>>> from urllib.parse import urlparse >>> urlparse['//www.cwi.nl:80/%7Eguido/Python.html'] ParseResult[scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment=''] >>> urlparse['www.cwi.nl/%7Eguido/Python.html'] ParseResult[scheme='', netloc='', path='www.cwi.nl/%7Eguido/Python.html', params='', query='', fragment=''] >>> urlparse['help/Python.html'] ParseResult[scheme='', netloc='', path='help/Python.html', params='', query='', fragment='']50] hoặc dữ liệu [đối với phương pháp
>>> from urllib.parse import urlparse >>> urlparse['//www.cwi.nl:80/%7Eguido/Python.html'] ParseResult[scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment=''] >>> urlparse['www.cwi.nl/%7Eguido/Python.html'] ParseResult[scheme='', netloc='', path='www.cwi.nl/%7Eguido/Python.html', params='', query='', fragment=''] >>> urlparse['help/Python.html'] ParseResult[scheme='', netloc='', path='help/Python.html', params='', query='', fragment='']52]
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ú pháp có cấu trúc
Các đối tượng kết quả từ , và các hàm là các lớp con của loại. 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
Để có kết quả, chỉ các mã định danh đoạn trống sẽ bị xóa. Đối với và kết quả, 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
>>> from urllib.parse import urlsplit >>> url = '//www.Python.org/doc/#' >>> r1 = urlsplit[url] >>> r1.geturl[] '//www.Python.org/doc/' >>> r2 = urlsplit[r1.geturl[]] >>> r2.geturl[] '//www.Python.org/doc/'
Các lớp sau cung cấp việc triển khai các kết quả phân tích cú pháp có cấu trúc khi thao tác trên các đối tượng
lớp urllib. phân tích cú pháp. DefragResult[url , đoạn]Lớp bê tông cho kết quả chứa dữ liệu. Phương thức
>>> from urllib.parse import urlparse >>> urlparse['//www.cwi.nl:80/%7Eguido/Python.html'] ParseResult[scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment=''] >>> urlparse['www.cwi.nl/%7Eguido/Python.html'] ParseResult[scheme='', netloc='', path='www.cwi.nl/%7Eguido/Python.html', params='', query='', fragment=''] >>> urlparse['help/Python.html'] ParseResult[scheme='', netloc='', path='help/Python.html', params='', query='', fragment='']50 trả về một thể hiện
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ả chứa dữ liệu. Phương thức
>>> from urllib.parse import urlparse >>> urlparse['//www.cwi.nl:80/%7Eguido/Python.html'] ParseResult[scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment=''] >>> urlparse['www.cwi.nl/%7Eguido/Python.html'] ParseResult[scheme='', netloc='', path='www.cwi.nl/%7Eguido/Python.html', params='', query='', fragment=''] >>> urlparse['help/Python.html'] ParseResult[scheme='', netloc='', path='help/Python.html', params='', query='', fragment='']50 trả về một thể hiệnlớp urllib. phân tích cú pháp. SplitResult[sơ đồ , netloc, path, query, fragment]
Lớp bê tông cho kết quả chứa dữ liệu. Phương thức
>>> from urllib.parse import urlparse >>> urlparse['//www.cwi.nl:80/%7Eguido/Python.html'] ParseResult[scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment=''] >>> urlparse['www.cwi.nl/%7Eguido/Python.html'] ParseResult[scheme='', netloc='', path='www.cwi.nl/%7Eguido/Python.html', params='', query='', fragment=''] >>> urlparse['help/Python.html'] ParseResult[scheme='', netloc='', path='help/Python.html', params='', query='', fragment='']50 trả về một thể hiện
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 thao tác trên hoặc các đối tượng
lớp urllib. phân tích cú pháp. DefragResultBytes[url , đoạn]Lớp bê tông cho kết quả chứa dữ liệu. Phương thức
>>> from urllib.parse import urlparse >>> urlparse['//www.cwi.nl:80/%7Eguido/Python.html'] ParseResult[scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment=''] >>> urlparse['www.cwi.nl/%7Eguido/Python.html'] ParseResult[scheme='', netloc='', path='www.cwi.nl/%7Eguido/Python.html', params='', query='', fragment=''] >>> urlparse['help/Python.html'] ParseResult[scheme='', netloc='', path='help/Python.html', params='', query='', fragment='']52 trả về một thể hiện
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ả chứa dữ liệu. Phương thức
>>> from urllib.parse import urlparse >>> urlparse['//www.cwi.nl:80/%7Eguido/Python.html'] ParseResult[scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment=''] >>> urlparse['www.cwi.nl/%7Eguido/Python.html'] ParseResult[scheme='', netloc='', path='www.cwi.nl/%7Eguido/Python.html', params='', query='', fragment=''] >>> urlparse['help/Python.html'] ParseResult[scheme='', netloc='', path='help/Python.html', params='', query='', fragment='']52 trả về một thể hiện
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ả chứa dữ liệu. Phương thức
>>> from urllib.parse import urlparse >>> urlparse['//www.cwi.nl:80/%7Eguido/Python.html'] ParseResult[scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment=''] >>> urlparse['www.cwi.nl/%7Eguido/Python.html'] ParseResult[scheme='', netloc='', path='www.cwi.nl/%7Eguido/Python.html', params='', query='', fragment=''] >>> urlparse['help/Python.html'] ParseResult[scheme='', netloc='', path='help/Python.html', params='', query='', fragment='']52 trả về một thể hiện
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
>>> from urllib.parse import urlparse >>> urlparse['//www.cwi.nl:80/%7Eguido/Python.html'] ParseResult[scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment=''] >>> urlparse['www.cwi.nl/%7Eguido/Python.html'] ParseResult[scheme='', netloc='', path='www.cwi.nl/%7Eguido/Python.html', params='', query='', fragment=''] >>> urlparse['help/Python.html'] ParseResult[scheme='', netloc='', path='help/Python.html', params='', query='', fragment='']96. Các chữ cái, chữ số và ký tự
>>> from urllib.parse import urlparse >>> urlparse['//www.cwi.nl:80/%7Eguido/Python.html'] ParseResult[scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment=''] >>> urlparse['www.cwi.nl/%7Eguido/Python.html'] ParseResult[scheme='', netloc='', path='www.cwi.nl/%7Eguido/Python.html', params='', query='', fragment=''] >>> urlparse['help/Python.html'] ParseResult[scheme='', netloc='', path='help/Python.html', params='', query='', fragment='']97 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à
>>> from urllib.parse import urlparse >>> urlparse['//www.cwi.nl:80/%7Eguido/Python.html'] ParseResult[scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment=''] >>> urlparse['www.cwi.nl/%7Eguido/Python.html'] ParseResult[scheme='', netloc='', path='www.cwi.nl/%7Eguido/Python.html', params='', query='', fragment=''] >>> urlparse['help/Python.html'] ParseResult[scheme='', netloc='', path='help/Python.html', params='', query='', fragment='']98
chuỗi có thể là một hoặc một đối tượng
Đã 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 phương thức chấp nhận. mã hóa mặc định thành
>>> from urllib.parse import urlparse >>> urlparse['//www.cwi.nl:80/%7Eguido/Python.html'] ParseResult[scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment=''] >>> urlparse['www.cwi.nl/%7Eguido/Python.html'] ParseResult[scheme='', netloc='', path='www.cwi.nl/%7Eguido/Python.html', params='', query='', fragment=''] >>> urlparse['help/Python.html'] ParseResult[scheme='', netloc='', path='help/Python.html', params='', query='', fragment='']57. lỗi mặc định là
>>> from urllib.parse import urlparse >>> u = urlparse['//www.cwi.nl:80/%7Eguido/Python.html'] >>> u ParseResult[scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment=''] >>> u._replace[scheme='http'] ParseResult[scheme='http', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment='']03, nghĩa là các ký tự không được hỗ trợ sẽ tăng. không được cung cấp mã hóa và lỗi nếu chuỗi là a hoặc a được nâng lên
Lưu ý rằng
>>> from urllib.parse import urlparse >>> u = urlparse['//www.cwi.nl:80/%7Eguido/Python.html'] >>> u ParseResult[scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment=''] >>> u._replace[scheme='http'] ParseResult[scheme='http', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment='']07 tương đương với
>>> from urllib.parse import urlparse >>> u = urlparse['//www.cwi.nl:80/%7Eguido/Python.html'] >>> u ParseResult[scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment=''] >>> u._replace[scheme='http'] ParseResult[scheme='http', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment='']08
Thí dụ.
>>> from urllib.parse import urlparse >>> u = urlparse['//www.cwi.nl:80/%7Eguido/Python.html'] >>> u ParseResult[scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment=''] >>> u._replace[scheme='http'] ParseResult[scheme='http', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment='']09 sản lượng
>>> from urllib.parse import urlparse >>> u = urlparse['//www.cwi.nl:80/%7Eguido/Python.html'] >>> u ParseResult[scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment=''] >>> u._replace[scheme='http'] ParseResult[scheme='http', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment='']10urllib. phân tích cú pháp. quote_plus[chuỗi , an toàn='', encoding=None, errors=None]
Like , 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à
>>> from urllib.parse import urlparse >>> urlparse['//www.cwi.nl:80/%7Eguido/Python.html'] ParseResult[scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment=''] >>> urlparse['www.cwi.nl/%7Eguido/Python.html'] ParseResult[scheme='', netloc='', path='www.cwi.nl/%7Eguido/Python.html', params='', query='', fragment=''] >>> urlparse['help/Python.html'] ParseResult[scheme='', netloc='', path='help/Python.html', params='', query='', fragment='']98
Thí dụ.
>>> from urllib.parse import urlparse >>> u = urlparse['//www.cwi.nl:80/%7Eguido/Python.html'] >>> u ParseResult[scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment=''] >>> u._replace[scheme='http'] ParseResult[scheme='http', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment='']13 sản lượng
>>> from urllib.parse import urlparse >>> u = urlparse['//www.cwi.nl:80/%7Eguido/Python.html'] >>> u ParseResult[scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment=''] >>> u._replace[scheme='http'] ParseResult[scheme='http', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment='']14urllib. phân tích cú pháp. quote_from_bytes[byte , an toàn='/']
Like , nhưng chấp nhận một đối tượng chứ không phải một và không thực hiện mã hóa chuỗi thành byte
Thí dụ.
>>> from urllib.parse import urlparse >>> u = urlparse['//www.cwi.nl:80/%7Eguido/Python.html'] >>> u ParseResult[scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment=''] >>> u._replace[scheme='http'] ParseResult[scheme='http', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment='']18 sản lượng
>>> from urllib.parse import urlparse >>> u = urlparse['//www.cwi.nl:80/%7Eguido/Python.html'] >>> u ParseResult[scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment=''] >>> u._replace[scheme='http'] ParseResult[scheme='http', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment='']19urllib. phân tích cú pháp. bỏ trích dẫn[chuỗi , mã hóa='utf-8', errors='replace']
Thay thế
>>> from urllib.parse import urlparse >>> urlparse['//www.cwi.nl:80/%7Eguido/Python.html'] ParseResult[scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment=''] >>> urlparse['www.cwi.nl/%7Eguido/Python.html'] ParseResult[scheme='', netloc='', path='www.cwi.nl/%7Eguido/Python.html', params='', query='', fragment=''] >>> urlparse['help/Python.html'] ParseResult[scheme='', netloc='', path='help/Python.html', params='', query='', fragment='']96 lần thoát 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 phương thức chấp nhận
chuỗi có thể là một hoặc một đối tượng
mã hóa mặc định thành
>>> from urllib.parse import urlparse >>> urlparse['//www.cwi.nl:80/%7Eguido/Python.html'] ParseResult[scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment=''] >>> urlparse['www.cwi.nl/%7Eguido/Python.html'] ParseResult[scheme='', netloc='', path='www.cwi.nl/%7Eguido/Python.html', params='', query='', fragment=''] >>> urlparse['help/Python.html'] ParseResult[scheme='', netloc='', path='help/Python.html', params='', query='', fragment='']57. lỗi mặc định là
>>> from urllib.parse import urlparse >>> u = urlparse['//www.cwi.nl:80/%7Eguido/Python.html'] >>> u ParseResult[scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment=''] >>> u._replace[scheme='http'] ParseResult[scheme='http', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment='']25, 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ụ.
>>> from urllib.parse import urlparse >>> u = urlparse['//www.cwi.nl:80/%7Eguido/Python.html'] >>> u ParseResult[scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment=''] >>> u._replace[scheme='http'] ParseResult[scheme='http', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment='']26 sản lượng
>>> from urllib.parse import urlparse >>> u = urlparse['//www.cwi.nl:80/%7Eguido/Python.html'] >>> u ParseResult[scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment=''] >>> u._replace[scheme='http'] ParseResult[scheme='http', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment='']27
Đã 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']Like , 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
Thí dụ.
>>> from urllib.parse import urlparse >>> u = urlparse['//www.cwi.nl:80/%7Eguido/Python.html'] >>> u ParseResult[scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment=''] >>> u._replace[scheme='http'] ParseResult[scheme='http', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment='']30 sản lượng
>>> from urllib.parse import urlparse >>> u = urlparse['//www.cwi.nl:80/%7Eguido/Python.html'] >>> u ParseResult[scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment=''] >>> u._replace[scheme='http'] ParseResult[scheme='http', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment='']27urllib. phân tích cú pháp. unquote_to_bytes[chuỗi]
Thay thế
>>> from urllib.parse import urlparse >>> urlparse['//www.cwi.nl:80/%7Eguido/Python.html'] ParseResult[scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment=''] >>> urlparse['www.cwi.nl/%7Eguido/Python.html'] ParseResult[scheme='', netloc='', path='www.cwi.nl/%7Eguido/Python.html', params='', query='', fragment=''] >>> urlparse['help/Python.html'] ParseResult[scheme='', netloc='', path='help/Python.html', params='', query='', fragment='']96 thoát bằng một octet tương đương của chúng và trả về một đối tượng
chuỗi có thể là một hoặc một đối tượng
Nếu nó là , các ký tự không phải ASCII không thoát trong chuỗi được mã hóa thành byte UTF-8
Thí dụ.
>>> from urllib.parse import urlparse >>> u = urlparse['//www.cwi.nl:80/%7Eguido/Python.html'] >>> u ParseResult[scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment=''] >>> u._replace[scheme='http'] ParseResult[scheme='http', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment='']37 sản lượng
>>> from urllib.parse import urlparse >>> u = urlparse['//www.cwi.nl:80/%7Eguido/Python.html'] >>> u ParseResult[scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment=''] >>> u._replace[scheme='http'] ParseResult[scheme='http', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment='']38urllib. 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 hoặc các đối tượng, thành chuỗi văn bản ASCII được mã hóa 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, thì nó phải được mã hóa thành byte, nếu không nó sẽ dẫn đến lỗi
Chuỗi kết quả là một chuỗi gồm _______10_______43 cặp được phân tách bằng _______10_______44 ký tự, 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, được sử dụng để trích dẫn các giá trị, có nghĩa là dấu cách được trích dẫn dưới dạng ký tự
>>> from urllib.parse import urlparse >>> u = urlparse['//www.cwi.nl:80/%7Eguido/Python.html'] >>> u ParseResult[scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment=''] >>> u._replace[scheme='http'] ParseResult[scheme='http', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment='']46 và ký tự '/' được mã hóa thành
>>> from urllib.parse import urlparse >>> u = urlparse['//www.cwi.nl:80/%7Eguido/Python.html'] >>> u ParseResult[scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment=''] >>> u._replace[scheme='http'] ParseResult[scheme='http', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment='']47, tuân theo tiêu chuẩn cho yêu cầu GET [
>>> from urllib.parse import urlparse >>> u = urlparse['//www.cwi.nl:80/%7Eguido/Python.html'] >>> u ParseResult[scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment=''] >>> u._replace[scheme='http'] ParseResult[scheme='http', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment='']48]. Một hàm thay thế có thể được truyền dưới dạng quote_via là , hàm này sẽ mã hóa khoảng trắng dưới dạng
>>> from urllib.parse import urlparse >>> u = urlparse['//www.cwi.nl:80/%7Eguido/Python.html'] >>> u ParseResult[scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment=''] >>> u._replace[scheme='http'] ParseResult[scheme='http', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment='']50 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
>>> from urllib.parse import urlparse >>> u = urlparse['//www.cwi.nl:80/%7Eguido/Python.html'] >>> u ParseResult[scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment=''] >>> u._replace[scheme='http'] ParseResult[scheme='http', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment='']51 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 urllib.parse
5, thì các cặp
>>> from urllib.parse import urlparse >>> u = urlparse['//www.cwi.nl:80/%7Eguido/Python.html'] >>> u ParseResult[scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment=''] >>> u._replace[scheme='http'] ParseResult[scheme='http', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment='']43 riêng lẻ được phân tách bằng
>>> from urllib.parse import urlparse >>> u = urlparse['//www.cwi.nl:80/%7Eguido/Python.html'] >>> u ParseResult[scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment=''] >>> u._replace[scheme='http'] ParseResult[scheme='http', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment='']44 đượ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à a ]
Để đảo ngược quá trình mã hóa này và được cung cấp trong mô-đun này để phân tích chuỗi truy vấn thành cấu trúc dữ liệu Python
Tham khảo để tìm hiểu cách phương thức có thể được sử dụng để tạo chuỗi truy vấn của URL hoặc dữ liệu cho yêu cầu 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ốngNhó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 chungTà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 mailtoYê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 đốiYê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