これはばかげた質問かもしれませんが、http や https のような URL スキームを宣言せずに urllib2 で URL を取得できますか?
「 http://blahblah.com 」と書く代わりに明確にするために、「blahblah.com」と書きたいだけですが、これは可能ですか?
これはばかげた質問かもしれませんが、http や https のような URL スキームを宣言せずに urllib2 で URL を取得できますか?
「 http://blahblah.com 」と書く代わりに明確にするために、「blahblah.com」と書きたいだけですが、これは可能ですか?
import urllib2
def open_url_with_default_protocol(*args, **kwargs):
# Use the HTTP scheme by default if none is given
# pass through all other arguments to urllib2.urlopen
default_scheme = 'http://'
url = args[0]
scheme, address = urllib2.splittype(url)
if not scheme:
# Replace the url in the args tuple by a URL with the default scheme
args = (default_scheme + args[0],) + args[1:]
return urllib2.urlopen(*args, **kwargs)
したがって、次のことができます。
>>> open_url_with_default_protocol('http://google.com')
<addinfourl at 4496800872 whose fp = <socket._fileobject object at 0x10bd92b50>>
>>> open_url_with_default_protocol('google.com')
<addinfourl at 4331750464 whose fp = <socket._fileobject object at 0x1027960d0>>
「//google.com」という形式の URL を渡した場合でも、この関数は失敗することに注意してください。これは、スキームがない場合、先頭に二重のスラッシュがないことを前提としているためです。