0

ここでスクレイピングによって取得したかなり厄介なURLを取得しました。問題は、パスとクエリ文字列にスペースやその他の特殊文字が含まれていることです。これがいくつかの例です。

http://www.example.com/some path/to the/file.html
http://www.example.com/some path/?file=path to/file name.png&name=name.me

それで、URLをエスケープしてurlopenに渡すことができるようにするための簡単で堅牢な方法はありますか?urlib.quoteを試しましたが、クエリ文字列の「?」、「&」、「=」もエスケープしているようです。また、プロトコルもエスケープしているようです。現在、私がやろうとしているのは正規表現を使用して、プロトコル、パス名、およびクエリ文字列を分離し、それらを別々にエスケープしますが、適切に分離されていない場合があります。アドバイスをいただければ幸いです。

4

1 に答える 1

5

urllib.quoteは/、デフォルトを除くすべてを引用します。2番目の引数としてそのままにしておく文字のリストを渡すことができます。

urllib.quote('http://www.example.com/some path/?file=path to/file name.png&name=name.me',
             '/:?&=')
'http://www.example.com/some%20path/?file=path%20to/file%20name.png&name=name.me'

しかし、これは半手動でいじるのはかなりトリッキーなものです。

于 2012-06-17T03:10:28.090 に答える