[ホーム] - [よく見るエラーメッセージ一覧] - ["ValueError: unknown url type" の原因と対処]

【Python】"ValueError: unknown url type" の原因と対処 | インターネットからファイルをダウンロードするサンプル





作成日:2022/02/18

urllib.request.urlretrieve でインターネット上のファイルをダウンロードしようとしたところ次のエラーが発生しました。


ValueError: unknown url type



様々な原因が考えられると思います。
今回はurlretrieve に与える URI の形式に誤りがありました。
以下のような形式が引数として与える正しい形式です。

https://servername.com/index.html

http://servername.com/index.html


【間違い】

import urllib.request

#url='http://example.com/test.txt'
url='//example.com/test.txt'


# \\escape
download_file_name='c:\\temp\\test2.txt'

urllib.request.urlretrieve(url, download_file_name)

Traceback (most recent call last):
File "c:\temp\test.py", line 10, in urllib.request.urlretrieve(url, download_file_name)
File "C:\Users\username\AppData\Local\Programs\Python\Python39\lib\urllib\request.py", line 239, in urlretrieve
with contextlib.closing(urlopen(url, data)) as fp:
File "C:\Users\username\AppData\Local\Programs\Python\Python39\lib\urllib\request.py", line 214, in urlopen
return opener.open(url, data, timeout)
File "C:\Users\username\AppData\Local\Programs\Python\Python39\lib\urllib\request.py", line 501, in open
req = Request(fullurl, data)
File "C:\Users\username\AppData\Local\Programs\Python\Python39\lib\urllib\request.py", line 320, in __init__
self.full_url = url
File "C:\Users\username\AppData\Local\Programs\Python\Python39\lib\urllib\request.py", line 346, in full_url
self._parse()
File "C:\Users\username\AppData\Local\Programs\Python\Python39\lib\urllib\request.py", line 375, in _parse
raise ValueError("unknown url type: %r" % self.full_url)
ValueError: unknown url type: '//example.com/test.txt'

サンプルコード

以下は Windows 10 環境における正常実行可能なサンプルコードです。

Windows 環境におけるインターネット上のWebサーバからファイルをダウンロードするサンプルを紹介します。
urllib はURLを利用するための便利なモジュール群です。
この中の urllib.request は URLs を取得するための Python のモジュールです。

次のサンプルではWebサーバ上からファイルをダウンロードします。

download_file_name にはファイルをダウンロードするローカルのファイル名を指定します。
サンプルコード:


import urllib.request

url='http://tooljp.com/test.txt'

# \\escape
download_file_name='c:\\temp\\test2.txt'

urllib.request.urlretrieve(url, download_file_name)







本サイト内掲載されている情報は、著作権法により保護されています。いかなる場合でも権利者の許可なくコピー、配布することはできません。 このページはリンクフリーです。(このページへの直接リンクも可能です。)

[ホーム] - [よく見るエラーメッセージ一覧]