[ホーム] - [よく見るエラーメッセージ一覧] - [socket.gaierror: [Errno 11001] getaddrinfo failed の原因と対処]

【Python】socket.gaierror: [Errno 11001] getaddrinfo failed の原因と対処 | インターネットからファイルをダウンロードするサンプル





作成日:2022/02/18


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


socket.gaierror: [Errno 11001] getaddrinfo failed



もし 指定した Webサーバのホストが存在しない、あるいはダウンしているなど接続できない場合はこのエラーが発生するようです。

【間違い】

import urllib.request

url='http://non-exist-server12345.comtest-2.txt'

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

urllib.request.urlretrieve(url, download_file_name)

Traceback (most recent call last):
File "C:\Users\username\AppData\Local\Programs\Python\Python39\lib\urllib\request.py", line 1342, in do_open
h.request(req.get_method(), req.selector, req.data, headers,
File "C:\Users\username\AppData\Local\Programs\Python\Python39\lib\http\client.py", line 1255, in request
self._send_request(method, url, body, headers, encode_chunked)
File "C:\Users\username\AppData\Local\Programs\Python\Python39\lib\http\client.py", line 1301, in _send_request
self.endheaders(body, encode_chunked=encode_chunked)
File "C:\Users\username\AppData\Local\Programs\Python\Python39\lib\http\client.py", line 1250, in endheaders
self._send_output(message_body, encode_chunked=encode_chunked)
File "C:\Users\username\AppData\Local\Programs\Python\Python39\lib\http\client.py", line 1010, in _send_output
self.send(msg)
File "C:\Users\username\AppData\Local\Programs\Python\Python39\lib\http\client.py", line 950, in send
self.connect()
File "C:\Users\username\AppData\Local\Programs\Python\Python39\lib\http\client.py", line 921, in connect
self.sock = self._create_connection(
File "C:\Users\username\AppData\Local\Programs\Python\Python39\lib\socket.py", line 822, in create_connection
for res in getaddrinfo(host, port, 0, SOCK_STREAM):
File "C:\Users\username\AppData\Local\Programs\Python\Python39\lib\socket.py", line 953, in getaddrinfo
for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
socket.gaierror: [Errno 11001] getaddrinfo failed

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "c:\temp\test.py", line 8, 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)
以下省略

サンプルコード

以下は 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)







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

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