Кто-нибудь знает библиотеку для исправления "битых" URL-адресов. Когда я пытаюсь открыть URL-адрес, такой как
http://www.domain.com/../page.html http://www.domain.com//page.html http://www.domain.com/page.html#stuff
urllib2.urlopen душит и возвращает мне HTTPError. Кто-нибудь знает библиотеку, которая может исправить подобные вещи?
Как насчет чего-то вроде ...:
import re import urlparse urls = ''' http://www.domain.com/../page.html http://www.domain.com//page.html http://www.domain.com/page.html#stuff '''.split() def main(): for u in urls: pieces = list(urlparse.urlparse(u)) pieces[2] = re.sub(r'^[./]*', '/', pieces[2]) pieces[-1] = '' print urlparse.urlunparse(pieces) main()
он излучает, как вы хотите:
http://www.domain.com/page.html http://www.domain.com/page.html http://www.domain.com/page.html
и может показаться, что примерно соответствует вашим потребностям, если я правильно их понял.
См. Также этот вопрос .