Python에서 파일 다운로드

Siddharth Swami 2023년1월30일
  1. requests 모듈을 사용하여 Python에서 파일 다운로드
  2. urllib 모듈을 사용하여 Python에서 파일 다운로드
  3. pycurl 모듈을 사용하여 Python에서 파일 다운로드
Python에서 파일 다운로드

Python은 인터넷의 리소스에 액세스하는 데 매우 자주 사용됩니다. 우리는 다른 라이브러리를 사용하여 요청과 연결을 생성할 수 있습니다. 이러한 라이브러리는 웹에서 HTTP 파일을 다운로드하거나 읽는 데에도 도움이 될 수 있습니다.

이 자습서에서는 Python으로 인터넷에서 파일을 다운로드합니다.

requests 모듈을 사용하여 Python에서 파일 다운로드

requests 모듈을 사용하여 인터넷에서 정보를 검색하고 웹 페이지를 읽을 수 있습니다.

get() 메소드는 파일을 다운로드할 지정된 URL에서 파일의 경로를 검색하는 데 도움이 됩니다. open() 메소드는 파일을 저장하려는 파일 객체를 생성한 다음 write() 함수를 사용하여 원하는 경로에 파일의 내용을 씁니다.

우리는 아래와 같이 이러한 기능을 사용하여 파일을 다운로드합니다.

import requests as req

URL = "https://www.facebook.com/favicon.ico"
file = req.get(url, allow_redirects=True)

open("facebook.ico", "wb").write(file.content)

출력:

1150

위의 코드는 URL에서 Facebook의 로고 파일을 다운로드하여 작업 디렉토리에 저장합니다. open() 함수에서 모든 경로를 지정할 수 있지만 wb 모드에서 열어야 합니다. 이것은 바이너리 모드에서 파일을 작성하려고 함을 나타냅니다.

위의 예는 작은 파일을 다운로드하는 데 적합하지만 큰 파일에는 효율적으로 작동하지 않습니다. file.content 함수는 파일 내용을 단일 문자열로 가져오는 데 사용됩니다. 위의 예에서는 작은 파일을 사용했기 때문에 제대로 작동했습니다.

큰 파일을 다운로드해야 하는 경우 청크 크기를 지정할 file.iter_content() 함수를 사용해야 합니다. 청크 형태로 데이터를 다운로드합니다.

다음 예제에서는 이 기능을 사용합니다.

import requests

URL = "http://codex.cs.yale.edu/avi/db-book/db4/slide-dir/ch1-2.pdf"

file = requests.get(URL, stream=True)

with open("Python.pdf", "wb") as pdf:
    for chunk in file.iter_content(chunk_size=1024):

        if chunk:
            pdf.write(chunk)

urllib 모듈을 사용하여 Python에서 파일 다운로드

웹에서 파일을 다운로드하고 읽기 위해 Python의 urllib 라이브러리를 사용할 수도 있습니다. 이것은 주어진 작업을 수행하기 위해 다른 기능을 가진 URL 처리 모듈입니다.

여기에서도 다운로드할 파일의 URL을 지정해야 합니다. urllib.request.urlopen() 메소드는 파일의 경로를 가져오고 파일이 다운로드되는 서버에 요청을 보냅니다.

파일을 다운로드하려면 urllib.request.urlretrieve() 함수를 사용할 수 있습니다. 주어진 주소에서 리소스를 다운로드하여 제공된 디렉토리에 저장합니다.

다음 예제에서는 이 방법을 사용하여 Facebook 아이콘을 다운로드합니다.

import urllib

urllib.request.urlretrieve("https://www.facebook.com/favicon.ico", "fb.ico")

출력:

('fb.ico', <http.client.HTTPMessage at 0x2d2d317a088>)

위의 출력은 파일이 성공적으로 다운로드되었음을 나타냅니다.

pycurl 모듈을 사용하여 Python에서 파일 다운로드

이 모듈과 함께 파일 처리를 사용하여 인터넷에서 파일을 다운로드할 수 있습니다. 먼저 필요한 파일을 다운로드할 파일 객체를 생성해야 합니다. 그런 다음 pycurl.Curl() 함수를 사용하여 객체를 만들고 컬 세션을 시작합니다.

setopt() 메소드는 파일의 URL 값을 설정하는 데 사용됩니다. 다음으로 perform() 함수는 HTTP 요청을 전송하여 서버에서 파일 전송 프로세스를 수행합니다. 다음으로 파일 객체를 사용하여 검색된 데이터를 파일에 씁니다. 마지막으로 close() 메소드는 세션을 닫고 작업 디렉토리에 파일을 다운로드합니다.

아래 코드를 참조하십시오.

import pycurl

file_name = "fb.ico"
file_src = "https://www.facebook.com/favicon.ico"

with open(file_name, "wb") as f:
    cl = pycurl.Curl()
    cl.setopt(cl.URL, file_src)
    cl.setopt(cl.WRITEDATA, f)
    cl.perform()
    cl.close()

관련 문장 - Python HTTP