python
  • image
  • download
  • urllib
  • python-3.5
  • 2016-07-21 3 views 0 likes 
    0

    URL을 변경하여 이미지를 다운로드하려고했지만 오류가 발생했습니다.변수가있는 파이썬 다운로드 이미지

    url_image="http://www.joblo.com/timthumb.php?src=/posters/images/full/"+str(title_2)+"-poster1.jpg&h=333&w=225" 
    
    user_agent = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64)' 
    headers = {'User-Agent': user_agent} 
    req = urllib.request.Request(url_image, None, headers) 
    
    
    print(url_image) 
    #image, h = urllib.request.urlretrieve(url_image) 
    with urllib.request.urlopen(req) as response: 
        the_page = response.read() 
    
    #print (the_page) 
    
    
    with open('poster.jpg', 'wb') as f: 
        f.write(the_page) 
    

    역 추적 (마지막으로 가장 최근 통화) : 파일 "C : \ 사용자 \ 루크 \ 바탕 화면 \ 스크레이퍼 \ 이미 저 finder.py"urllib.request.urlopen (REQ)와 라인 (97), 등 응답 : urlopen의 파일 "C : \ Users \ luke \ AppData \ Local \ Programs \ Python \ Python35-32 \ lib \ urllib \ request.py", 162 행, return opener.open (url, data, timeout) 열기 파일에서 "C : \ Users \ luke \ AppData \ Local \ Programs \ Python \ Python35-32 \ lib \ urllib \ request.py"파일, 열 465, 열기 응답 = self._open (req, data) 파일 " C : \ Users \ luke \ AppData \ Local \ Programs \ Python \ Python35-32 \ lib \ urllib \ request.py ", 483 줄, _open '_open', req) 파일 "C : \ Users \ luke \ AppData \ Local \ Programs \ Python \ Python35-32 \ lib \ urllib \ request.py"443 줄 _call_chain result = func (* args) 파일 "C : \ Users \ luke \ AppData \ Local \ Programs \ Python \ Python35-32 \ lib \ urllib \ request.py", 줄 1268, http_open return self.do_open (http.client.HTTPConnection, req) do_open의 "C : \ Users \ luke \ AppData \ Local \ Programs \ Python \ Python35-32 \ lib \ urllib \ request.py"파일에서 1243 행 dochop r = h.getresponse() 파일 "C : \ users \ luke \ AppData \ Local \ Programs \ Python \ Python35-32 \ lib \ http \ client.py "줄 1174, getresponse response.begin() 파일"C : \ Users \ luke \ AppData \ Local \ Programs \ Python \ Python35-32 \ lib \ http \ client.py ", 282 줄 시작하십시오._read_status에 0 버전, 상태, 이유 = self._read_status() 파일 "C : \ Users \ luke \ AppData \ Local \ Programs \ Python \ Python35-32 \ lib \ http \ client.py"파일, 264 줄, raise BadStatusLine (line) http.client.BadStatusLine :

    +0

    봅니다 헤더없이 파이썬에서 urllib2를 사용 (또는 서버가 될 필요합니까 어떻게 해결 다른 질문을 구글 - 당신이 3를 사용하는 것처럼 이것은 파이썬 2.7, 그것은 보인다 Windows에서 Mozilla를 사용하는 이유는 무엇입니까?). 또한, 우리는 title_2이 무엇인지 알지 못합니다. 홀수 문자 나 공백이 있으면 인코딩해야합니다. – Fhaab

    +0

    은 title_2에 10-cloverfield-lane을 사용하고 헤더없이 동일한 오류 메시지가 나타납니다. – spark

    답변

    0

    제 조언은 urlib2를 사용하는 것입니다. 또한 서버가 지원할 경우 gzip 인코딩 (대역폭 줄이기)을 허용하는 멋진 함수를 작성했습니다. 소셜 미디어 파일을 다운로드 할 때이 파일을 사용하지만, 무엇이든 사용해야합니다.

    당신의 코드를 디버깅하려하지만, 단지 스 니펫 일 뿐이며 오류 메시지의 형식이 잘못되어 있기 때문에 오류가 어디서 발생했는지 정확하게 알기가 어렵습니다. 코드 줄에는 97 행이 없습니다.

    가능한 한 짧지는 않지만 명확하고 재사용 할 수 있습니다. 이 경우 당신은 3

    import urllib2 
    import gzip 
    from StringIO import StringIO 
    
    def download(url): 
        """ 
        Download and return the file specified in the URL; attempt to use 
        gzip encoding if possible. 
        """ 
        request = urllib2.Request(url) 
        request.add_header('Accept-Encoding', 'gzip') 
        try: 
         response = urllib2.urlopen(request) 
        except Exception, e: 
         raise IOError("%s(%s) %s" % (_ERRORS[1], url, e)) 
        payload = response.read() 
        if response.info().get('Content-Encoding') == 'gzip': 
         buf = StringIO(payload) 
         f = gzip.GzipFile(fileobj=buf) 
         payload = f.read() 
        return payload 
    
    def save_media(filename, media): 
        file_handle = open(filename, "wb") 
        file_handle.write(media) 
        file_handle.close() 
    
    title_2 = "10-cloverfield-lane" 
    media = download("http://www.joblo.com/timthumb.php?src=/posters/images/full/{}-poster1.jpg&h=333&w=225".format(title_2)) 
    save_media("poster.jpg", media) 
    

     관련 문제

    • 관련 문제 없음^_^