benutze urllib.quote
oderurllib.quote_plus
Aus der urllib-Dokumentation :
Zitat (Zeichenfolge [, sicher])
Ersetzen Sie Sonderzeichen in der Zeichenfolge mit dem Escapezeichen "% xx". Buchstaben, Ziffern und die Zeichen "_.-" werden niemals in Anführungszeichen gesetzt. Der optionale Parameter safe gibt zusätzliche Zeichen an, die nicht in Anführungszeichen gesetzt werden sollen. Der Standardwert ist '/'.
Beispiel: quote('/~connolly/')
Ausbeuten '/%7econnolly/'
.
quote_plus (string [, safe])
Wie quote (), ersetzt aber auch Leerzeichen durch Pluszeichen, wie zum Zitieren von HTML-Formularwerten erforderlich. Pluszeichen in der Originalzeichenfolge werden maskiert, sofern sie nicht im Safe enthalten sind. Es gibt auch keinen sicheren Standardwert für '/'.
BEARBEITEN: Wenn Sie urllib.quote oder urllib.quote_plus für die gesamte URL verwenden, wird dies beschädigt, wie @ ΤΖΩΤΖΙΟΥ hervorhebt:
>>> quoted_url = urllib.quote('http://www.example.com/foo goo/bar.html')
>>> quoted_url
'http%3A//www.example.com/foo%20goo/bar.html'
>>> urllib2.urlopen(quoted_url)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "c:\python25\lib\urllib2.py", line 124, in urlopen
return _opener.open(url, data)
File "c:\python25\lib\urllib2.py", line 373, in open
protocol = req.get_type()
File "c:\python25\lib\urllib2.py", line 244, in get_type
raise ValueError, "unknown url type: %s" % self.__original
ValueError: unknown url type: http%3A//www.example.com/foo%20goo/bar.html
@ ΤΖΩΤΖΙΟΥ bietet eine Funktion, die urlparse.urlparse und urlparse.urlunparse verwendet , um die URL zu analysieren und nur den Pfad zu codieren. Dies kann für Sie nützlicher sein. Wenn Sie die URL jedoch aus einem bekannten Protokoll und Host mit einem verdächtigen Pfad erstellen, können Sie wahrscheinlich genauso gut URL-Analyse vermeiden und nur den verdächtigen Teil der URL zitieren, der mit verkettet ist bekannte sichere Teile.