1

私は多くの検索と実験を行ってきましたが、解決策を見つけることができませんでした. だから、私が見逃した些細なことがあれば、事前にお詫びします.

問題:

URLリソースをダウンロードしているPythonターボギアアプリがあります。クライアントからダウンロードするための URL が与えられています。

特に 1 つのクライアントは、エスケープされていない URL を送信します。たとえば、「http://www.foo.com/file with space.txt」

ダウンロードしようとすると、サーバーがこの URL を認識しないため、ダウンロードに失敗します。有効な URL にするには、スペースをエスケープする必要があります。

文字列をエンコードするメソッド (urllib.urlencode/urllib.quote など) があることは知っています。ただし、作業する文字列は URL ではないと想定しています。これらのメソッドに URL を指定すると、URL のスキームがエスケープされ、さらに無効になります。

つまり、要約は次のとおりです。Pythonで完全修飾URL全体をエスケープ解除するにはどうすればよいですか?

注: urlparse を使用して URL コンポーネントを解析し、パスを取得しようとしました。ただし、URL にクエリ パラメータやフラグメントなどがある場合もあります。そのため、URL を部分に分割し、パス + クエリ + フラグメントからのみ必要なものをエスケープし、URL を再構築するコードを記述したくありません。

URLを直接取得してエスケープするヘルパー関数はありますか?

また、クライアントから有効なエスケープ URL を取得する場合があることに注意してください。ですから、二重にエスケープすることなく、それらも処理したいと思います。

4

2 に答える 2

2

わかりました、私はpypiで次を見つけました。これで問題は解決したようです。

https://github.com/seomoz/url-py/

これは、seomoz の URL の卵です。仕事をとてもうまくやっているようです。

于 2013-07-16T18:48:54.580 に答える