HTMLページでURL(主にHTTP URL)を解析する必要のあるアプリケーションで作業しています。入力を制御できず、ちょっと混乱します。私は頻繁に遭遇していPythonでのURL解析 - パス内のダブルスラッシュの正規化
一つの問題は、非常に厳しい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のクエリ/フラグメント部分を取り除くために今まで見つかった唯一の方法だからです。たぶんもっと良い方法がありますが、見つけられませんでした。
これを避ける方法をお勧めする人はいないでしょうか、(私は知っている)正規表現を使って自分自身でパスを正規化すべきですか?
あなたは "それは、クエリ/フラグメントの一部を除去する唯一の方法だ" とはどういう意味ですか?スラッシュとクエリとは何が関係していますか? – jknupp
これはクエリとは関係がありません。なぜなら、URLを解析してから、自分自身のパスに戻ってくる理由は、クエリとフラグメントを除外したいからです。より良い方法があれば、私はこの問題を解決する必要はありません – shevron
urlparseはURLのRFCを正しく実装していると思います -:の部分がスラッシュ(http: //tools.ietf.org/html/rfc1738) - あなたの場合、余分なスラッシュを削除してからurlparseに渡します。 –
BergmannF