Разбор URL-адресов в Python - нормализация двойной косой черты в путях

Я работаю над приложением, которое должно анализировать URL-адреса (в основном HTTP-URL) на HTML-страницах - у меня нет контроля над вводом, и некоторые из них, как и ожидалось, немного беспорядочные.

Одна из проблем, с которыми я часто сталкиваюсь, заключается в том, что urlparse очень строг (и, возможно, даже содержит ошибки?), Когда дело доходит до синтаксического анализа и объединения URL-адресов, которые имеют двойную косую черту в части пути, например:

testUrl = 'http://www.example.com//path?foo=bar'
urlparse.urljoin(testUrl, 
                 urlparse.urlparse(testUrl).path)

Вместо ожидаемый результат http://www.example.com//path (или даже лучше, с нормализованной одинарной косой чертой), я получаю http: // path .

Кстати, я использую такой код, потому что это единственный способ, который я нашел до сих пор, для удаления части запроса / фрагмента из URL-адресов. Может быть, есть способ лучше, но я не смог его найти.

Может ли кто-нибудь порекомендовать способ избежать этого, или я должен просто нормализовать путь самостоятельно, используя (относительно простое, я знаю) регулярное выражение?

5
задан shevron 19 January 2012 в 12:21
поделиться