Tôi đang làm việc trên một ứng dụng cần phân tích URL (chủ yếu là URL HTTP) trong các trang HTML - Tôi không kiểm soát được đầu vào và một số một chút lộn xộn.Phân tích cú pháp URL trong Python - bình thường hóa dấu gạch chéo kép trong đường dẫn
Một vấn đề tôi đang gặp phải thường xuyên là urlparse là rất nghiêm ngặt khi nói đến các URL phân tích cú pháp và tham gia có hai dấu gạch chéo ở phần đường, ví dụ (và thậm chí có thể có lỗi?):
testUrl = 'http://www.example.com//path?foo=bar'
urlparse.urljoin(testUrl,
urlparse.urlparse(testUrl).path)
Thay vì kết quả mong đợi http://www.example.com//path
(hoặc thậm chí tốt hơn, với dấu gạch chéo đơn chuẩn hóa), tôi kết thúc bằng http://path
.
BTW lý do tôi đang chạy mã như vậy là vì đó là cách duy nhất tôi tìm thấy cho đến nay để tách phần truy vấn/phân đoạn khỏi URL. Có lẽ có một cách tốt hơn để làm điều đó, nhưng tôi không thể tìm thấy một.
Bất kỳ ai có thể đề xuất cách để tránh điều này hay tôi nên bình thường hóa đường dẫn của mình bằng cách sử dụng regex (tương đối đơn giản, tôi biết)?
Ý anh là gì bởi "đó là cách duy nhất để tước phần truy vấn/đoạn"? Dấu gạch chéo phải làm gì với truy vấn? – jknupp
Nó không liên quan gì đến truy vấn - lý do tôi phân tích cú pháp một URL và sau đó tham gia đường dẫn riêng của nó vào đó là vì tôi muốn loại bỏ truy vấn và đoạn. Nếu có một cách tốt hơn để làm điều đó, tôi sẽ không cần phải giải quyết vấn đề này – shevron
Tôi nghĩ rằng urlparse chỉ là thực hiện RFC của URL một cách chính xác - chỉ định rằng sau khi phần: có vẻ chỉ là một dấu gạch chéo (http: //tools.ietf.org/html/rfc1738) - vì vậy trong trường hợp của bạn, tôi sẽ cố gắng tách dấu gạch chéo thêm trước khi chuyển nó sang urlparse. –
BergmannF