9

欠落している場合は、特定の URL 文字列の前に「http」スキーム名を追加したいと思います。それ以外の場合は、url をそのままにしておくので、urlparse がこれを行う正しい方法だと思いました。しかし、スキームがなく、get url を使用すると、スキームとドメインの間で「//」ではなく /// が取得されます。

>>> t = urlparse.urlparse('www.example.com', 'http')
>>> t.geturl()
'http:///www.example.com' # three ///

この URL を実際に次のように変換するにはどうすればよいですか。

'http://www.example.com' # two //
4

2 に答える 2

6

短い答え(ただし、少しトートロジー的です):

>>> urlparse.urlparse("http://www.example.com").geturl()
'http://www.example.com'

コード例では、ホスト名はネットワークの場所ではなくパスとして解析されます。

>>> urlparse.urlparse("www.example.com/go")
ParseResult(scheme='', netloc='', path='www.example.com/go', params='', \
    query='', fragment='')

>>> urlparse.urlparse("http://www.example.com/go")
ParseResult(scheme='http', netloc='www.example.com', path='/go', params='', \
    query='', fragment='')
于 2011-09-02T21:46:03.843 に答える
1

意図したとおりに urlparse を使用したい場合、「//www.example.com」を urlstring として使用するのが最も「正しい」同等の方法です。このような urlstring はスキームのない絶対パスであるため、デフォルトのスキームとして "http" を指定できます。URLに文字列「//」が含まれているかどうかを検出し、含まれていない場合は先頭に「//」を追加することでこれを行うことができると思います。

于 2011-09-03T04:08:52.643 に答える