python 입문 실천 1: 단순 파충류

설명: 개인 트 레이 너 python 용.운영 체제: window 10 x64 IDE: Pycharm 2017.2.2 Python 버 전: 3.6.2
1. 단일 그림 다운로드
#     
from urllib import request
#            
url = "http://pic.qiantucdn.com/images/banner/59ad4e6c86b91.jpg"
#     
request = request.urlopen(url)
#       
response = request.read()
#         ,          
f = open("C:/python_test/"+url.split("/")[-1],"wb")
#     
f.write(response)
#     
f.close()

그 중에서 마지막 세 마디 코드 도 다음 과 같이 간소화 할 수 있다.
with open("C:/python_test/"+url.split("/")[-1],"wb") as f:
    f.write(response)

with 키 워드 를 사용 하면 흐름 을 닫 을 필요 가 없습니다.
2. 전체 그림 다운로드
# urllib  ,request       ,    HTTP  
import urllib.request
#          
import re
#     ,        ,         
url = "http://www.58pic.com/piccate/5-145-0.html"
#     
req = urllib.request.urlopen(url)
#        
res = req.read()
#              
res = repr(res)
#             r                ,         ,         
# \S         *  0-n 
regex = r'http://[\S]*.jpg'
#                 ,        
pattern = re.compile(regex)
#             findall  ,            ,   list  
get_image = pattern.findall(res)
#       ,         
page = 1
for image in get_image:
  # urlretrieve            
  urllib.request.urlretrieve(image, "C:/python_test/"+"%s.jpg" % page)
  page += 1

3. 다운로드 진행 표시
이 url retrieve 방법 은 다음 과 같 습 니 다.
urlretrieve(url, filename=None, reporthook=None, data=None)
  • 1. 첫 번 째 매개 변 수 는 다운로드 할 자원 의 주 소 를 표시 합 니 다
  • 2. 두 번 째 매개 변 수 는 저 장 된 경로 와 이름
  • 을 나타 낸다.
  • 3. 세 번 째 매개 변 수 는 리 셋 함수 입 니 다. 서버 에 연결 되 고 해당 하 는 데이터 블록 전송 이 끝 났 을 때 이 리 셋 을 실행 합 니 다. 우 리 는 이 리 셋 함 수 를 이용 하여 현재 다운로드 진 도 를 표시 할 수 있 습 니 다.
  • 4. 네 번 째 매개 변 수 는 post 에서 서버 까지 의 데이터
  • 를 나타 낸다.
    이 방법 은 두 개의 요소 (filename, headers) 를 포함 하 는 원 그룹 을 되 돌려 줍 니 다. filename 은 로 컬 에 저장 하 는 경 로 를 표시 하고 header 는 서버 의 응답 헤더 대상 정 보 를 표시 합 니 다.다음 과 같다.
    ('C:/python_test/34.jpg', )
    

    다음은 이 함 수 를 사용 하여 네트워크 에 있 는 파일 을 다운로드 하고 다운로드 진 도 를 표시 합 니 다.
    import urllib.request
    
    #       
    def callback(a, b, c):
        '''
        :param a:              
        :param b:       ,  8192  
        :param c:         
        '''  
        per = 100.0 * a * b / c
        if per > 100:
            per = 100
        print('%.2f%%' % per)
    
    #          
    url = "http://sw.bos.baidu.com/sw-search-sp/software/3756358c42c34/npp_7.5.1_Installer.exe"
    #           
    filename = "c:/python_test/notepad++.exe"
    #   
    urllib.request.urlretrieve(url, filename, callback)
    
    

    좋은 웹페이지 즐겨찾기