>  기사  >  백엔드 개발  >  Python을 사용하여 다운로드된 11가지 자세(각각은 이전 것보다 더 발전됨)

Python을 사용하여 다운로드된 11가지 자세(각각은 이전 것보다 더 발전됨)

WBOY
WBOY앞으로
2023-05-15 16:31:06720검색

使用 Python 下载的11种姿势,一种比一种高级

아래에서는 리디렉션된 파일 다운로드, 대용량 파일 다운로드, 멀티 스레드 다운로드 완료 및 기타 전략과 같이 발생할 수 있는 다양한 문제를 극복하는 방법에 대해 알아봅니다.

1. 요청 사용

요청 모듈을 사용하여 URL에서 파일을 다운로드할 수 있습니다.

다음 코드를 고려하세요.

使用 Python 下载的11种姿势,一种比一种高级

단순히 요청 모듈의 get 메소드를 사용하여 URL을 얻고 결과를 "myfile"이라는 변수에 저장합니다. 그런 다음 이 변수의 내용을 파일에 씁니다.

2. wget 사용

使用 Python 下载的11种姿势,一种比一种高级

Python의 wget 모듈을 사용하여 URL에서 파일을 다운로드할 수도 있습니다. 다음 명령에 따라 pip를 사용하여 wget 모듈을 설치할 수 있습니다.

Python용 로고 이미지를 다운로드하는 데 사용할 다음 코드를 고려하세요.

使用 Python 下载的11种姿势,一种比一种高级

이 코드에서는 URL과 경로(이미지가 저장될 위치)가 wget 모듈의 다운로드 방법으로 전달됩니다.

3. 리디렉션된 파일 다운로드

이 섹션에서는 요청을 사용하여 .pdf 파일을 통해 다른 URL로 리디렉션되는 URL에서 파일을 다운로드하는 방법을 알아봅니다. URL은 다음과 같습니다.

使用 Python 下载的11种姿势,一种比一种高级

이 PDF 파일을 다운로드하려면 다음 코드를 사용하세요.

使用 Python 下载的11种姿势,一种比一种高级

이 코드에서는 첫 번째 단계에서 URL을 지정합니다. 그런 다음 요청 모듈의 get 메소드를 사용하여 URL을 가져옵니다. get 메소드에서 URL의 리디렉션을 허용하고 리디렉션된 콘텐츠가 변수 myfile에 할당되도록 허용_redirects를 True로 설정합니다. 또한, 퍼블릭 계정 백엔드에서 탑 아키텍트를 검색해 '인터뷰 현황'을 답변하시면 깜짝 선물을 받으실 수 있습니다.

마지막으로 얻은 내용을 쓰기 위해 파일을 엽니다.

4. 대용량 파일을 덩어리로 다운로드

다음 코드를 고려하세요.

使用 Python 下载的11种姿势,一种比一种高级

먼저 이전과 마찬가지로 요청 모듈의 get 메소드를 사용하지만 이번에는 스트림 속성을 True로 설정하겠습니다.

다음으로 현재 작업 디렉터리에 PythonBook.pdf라는 파일을 만들고 쓰기 위해 엽니다.

그런 다음 매번 다운로드할 청크 크기를 지정합니다. 이를 1024바이트로 설정한 다음 각 청크를 반복하고 청크가 끝날 때까지 해당 청크를 파일에 기록했습니다.

아름답지 않나요? 걱정하지 마세요. 나중에 다운로드 프로세스의 진행률 표시줄이 표시됩니다.

5. 여러 파일 다운로드(병렬/배치 다운로드)

여러 파일을 동시에 다운로드하려면 다음 모듈을 가져오세요.

使用 Python 下载的11种姿势,一种比一种高级

소요 시간을 확인하기 위해 os 및 시간 모듈을 가져왔습니다. 파일을 다운로드하세요. ThreadPool 모듈을 사용하면 풀을 사용하여 여러 스레드 또는 프로세스를 실행할 수 있습니다.

파일에 대한 응답을 분할하는 간단한 함수를 만들어 보겠습니다.

使用 Python 下载的11种姿势,一种比一种高级

URL은 다운로드하려는 페이지의 경로와 URL을 지정하는 2D 배열입니다.

使用 Python 下载的11种姿势,一种比一种高级

이전 섹션에서 했던 것처럼 이 URL을 request.get에 전달합니다. 마지막으로 파일(URL에 지정된 경로)을 열고 페이지 내용을 작성합니다.

이제 각 URL에 대해 개별적으로 이 함수를 호출하거나 모든 URL에 대해 동시에 이 함수를 호출할 수 있습니다. 타이머에 주의하면서 for 루프에서 각 URL에 대해 개별적으로 이 함수를 호출해 보겠습니다.

使用 Python 下载的11种姿势,一种比一种高级

이제 for 루프를 다음 코드 줄로 바꾸세요.

使用 Python 下载的11种姿势,一种比一种高级

스크립트를 실행합니다.

6. 다운로드 시 진행률 표시줄을 사용하세요

진행률 표시줄은 클린트 모듈의 UI 구성요소입니다. clint 모듈을 설치하려면 다음 명령을 입력하십시오.

使用 Python 下载的11种姿势,一种比一种高级

다음 코드를 고려하십시오.

使用 Python 下载的11种姿势,一种比一种高级

이 코드에서는 먼저 요청 모듈을 가져온 다음 clint.textui에서 진행 구성 요소를 가져왔습니다. 유일한 차이점은 for 루프에 있습니다. 파일에 내용을 쓸 때 진행률 표시줄 모듈의 bar 메서드를 사용합니다.

7. urllib를 사용하여 웹페이지를 다운로드하세요

이 섹션에서는 urllib를 사용하여 웹페이지를 다운로드해 보겠습니다.

urllib 라이브러리는 Python의 표준 라이브러리이므로 설치할 필요가 없습니다.

다음 코드 줄을 사용하면 웹페이지를 쉽게 다운로드할 수 있습니다.

使用 Python 下载的11种姿势,一种比一种高级

여기서 파일을 저장할 대상과 저장할 URL을 지정하세요.

使用 Python 下载的11种姿势,一种比一种高级

이 코드에서는 urlretrieve 메소드를 사용하여 파일의 URL과 파일을 저장할 경로를 전달합니다. 파일 확장자는 .html입니다.

8. 프록시를 통해 다운로드

파일을 다운로드하기 위해 프록시를 사용해야 하는 경우 urllib 모듈의 ProxyHandler를 사용할 수 있습니다. 다음 코드를 살펴보세요.

使用 Python 下载的11种姿势,一种比一种高级

이 코드에서는 프록시 객체를 생성하고 urllib의 build_opener 메소드를 호출하고 프록시 객체를 전달하여 프록시를 엽니다. 그런 다음 페이지를 가져오기 위한 요청을 만듭니다.

또한 공식 문서에 설명된 대로 요청 모듈을 사용할 수도 있습니다.

使用 Python 下载的11种姿势,一种比一种高级

요청 모듈을 가져오고 프록시 객체를 생성하기만 하면 됩니다. 그러면 파일을 받으실 수 있습니다.

9. urllib3 사용

urllib3은 urllib 모듈의 향상된 버전입니다. pip를 사용하여 다운로드하고 설치할 수 있습니다.

使用 Python 下载的11种姿势,一种比一种高级

우리는 urllib3을 사용하여 웹 페이지를 가져와 텍스트 파일에 저장합니다.

다음 모듈을 가져옵니다.

使用 Python 下载的11种姿势,一种比一种高级

파일을 처리할 때 shutdown 모듈을 사용합니다.

이제 다음과 같이 URL 문자열 변수를 초기화합니다.

使用 Python 下载的11种姿势,一种比一种高级

그런 다음 필요한 연결 풀링을 추적하는 urllib3의 PoolManager를 사용합니다.

使用 Python 下载的11种姿势,一种比一种高级

파일 만들기:

使用 Python 下载的11种姿势,一种比一种高级

마지막으로 GET 요청을 보내 URL을 가져와 파일을 연 다음 파일에 응답을 씁니다.

使用 Python 下载的11种姿势,一种比一种高级

10 Boto3을 사용하여 S3에서 다운로드합니다. 파일

Amazon S3에서 파일을 다운로드하려면 Python boto3 모듈을 사용할 수 있습니다.

시작하기 전에 pip를 사용하여 awscli 모듈을 설치해야 합니다.

使用 Python 下载的11种姿势,一种比一种高级

AWS 구성의 경우 다음 명령을 실행합니다.

使用 Python 下载的11种姿势,一种比一种高级

이제 다음 명령을 눌러 세부 정보를 입력하세요.

使用 Python 下载的11种姿势,一种比一种高级

Amazon S3에서 파일을 다운로드하려면 boto3 및 botocore를 가져와야 합니다. Boto3는 Python이 Amazon 웹 서비스(예: S3)에 액세스할 수 있도록 하는 Amazon SDK입니다. Botocore는 Amazon 웹 서비스와 상호 작용하기 위한 명령줄 서비스를 제공합니다.

Botocore는 awscli와 함께 제공됩니다. boto3을 설치하려면 다음 명령을 실행합니다.

使用 Python 下载的11种姿势,一种比一种高级

이제 다음 두 모듈을 가져옵니다.

使用 Python 下载的11种姿势,一种比一种高级

Amazon에서 파일을 다운로드하는 동안 세 가지 매개 변수가 필요합니다.

  • 버킷 이름
  • 다음을 다운로드해야 합니다. 파일 이름
  • 다운로드 후 파일 이름

초기화 변수:

使用 Python 下载的11种姿势,一种比一种高级

이제 세션의 리소스를 사용하기 위해 변수를 초기화하겠습니다. 이를 위해 boto3의 resources() 메소드를 호출하고 s3인 서비스를 전달합니다:

使用 Python 下载的11种姿势,一种比一种高级

마지막으로 download_file 메소드를 사용하여 파일을 다운로드하고 변수를 전달합니다:

使用 Python 下载的11种姿势,一种比一种高级

11. asyncio

asyncio 모듈 사용하기 주로 시스템 이벤트를 처리하는 데 사용됩니다. 이벤트가 발생할 때까지 기다린 다음 해당 이벤트에 반응하는 이벤트 루프를 중심으로 작동합니다. 반응은 다른 함수를 호출하는 것일 수 있습니다. 이 프로세스를 이벤트 처리라고 합니다. asyncio 모듈은 이벤트 처리를 위해 코루틴을 사용합니다.

asyncio 이벤트 처리 및 코루틴 기능을 사용하기 위해 asyncio 모듈을 가져옵니다.

使用 Python 下载的11种姿势,一种比一种高级

이제 asyncio 코루틴 메서드를 다음과 같이 정의합니다.

使用 Python 下载的11种姿势,一种比一种高级

키워드 async는 이것이 기본 asyncio 코루틴임을 의미합니다. 코루틴 내부에는 특정 값을 반환하는 wait 키워드가 있습니다. return 키워드를 사용할 수도 있습니다.

이제 코루틴을 사용하여 웹사이트에서 파일을 다운로드하는 코드를 만들어 보겠습니다.

使用 Python 下载的11种姿势,一种比一种高级

이 코드에서는 파일을 다운로드하고 메시지를 반환하는 비동기 코루틴 함수를 만들었습니다.

그런 다음 URL을 기다리고 모든 URL을 대기열로 그룹화하는 또 다른 비동기 코루틴을 사용하여 main_func를 호출합니다. asyncio의 대기 기능은 코루틴이 완료될 때까지 기다립니다.

이제 코루틴을 시작하려면 asyncio의 get_event_loop() 메서드를 사용하여 코루틴을 이벤트 루프에 넣어야 하며, 마지막으로 asyncio의 run_until_complete() 메서드를 사용하여 해당 이벤트 루프를 실행합니다.

Python을 사용하여 파일을 다운로드하는 것은 재미있습니다. 이 튜토리얼이 여러분에게 도움이 되기를 바랍니다!

위 내용은 Python을 사용하여 다운로드된 11가지 자세(각각은 이전 것보다 더 발전됨)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 51cto.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제