基本的に、Pythonでurllib2を使用してURLをダウンロードしようとしています。
コードは次のとおりです。
import urllib2
req = urllib2.Request('www.tattoo-cover.co.uk')
req.add_header('User-agent','Mozilla/5.0')
result = urllib2.urlopen(req)
これはValueErrorを出力し、プログラムは例のURLに対してクラッシュします。ブラウザでURLにアクセスすると、正常に動作します。
問題を処理する方法はありますか?
更新:
問題が検出されたベンジェームスとsthに感謝=>「http://」を追加
質問が洗練されました:いくつかの組み込み関数でこのようなケースを自動的に処理することは可能ですか、それとも後続の文字列連結でエラー処理を行う必要がありますか?
プロトコルなしでブラウザにURLを入力すると、デフォルトでHTTPになります。 urllib2
はそのような仮定を行いません。その前にhttp://
を付ける必要があります。
ホスト名を指定するだけでなく、プロトコルを含む完全なURLを使用する必要があります。
正しいURLはhttp://www.tattoo-cover.co.uk/
。
メソッドurlparse
from urllib
(Python 3)を使用して、アドレス指定スキーム(http、https、ftp)の存在を確認し、存在しない場合はスキームを連結できます。
In [1]: from urllib.parse import urlparse
..:
..: url = 'www.myurl.com'
..: if not urlparse(url).scheme:
..: url = 'http://' + url
..:
..: url
Out[1]: 'http://www.myurl.com'
あなたは私が思うそのためにurlparse関数を使うことができます: