2015-04-18 4 views
1

Я пытаюсь загрузить pdf с помощью urllib2. Проблема в том, что он поднимает urllib2.HTTPError: HTTP Error 400: Bad Request.urllib2.urlopen вызывает ошибку HTTP 400: неверный запрос

Я полагаю, что проблема, вероятно, в форме URL-адреса. Я попытался применить метод urllib2.quote, но это не помогло.

URL: http://www.epi.sk/Main/Download.aspx?fn=\OV\15\OV2015072a$ce10308b-264c-400a-81ad-e643c08a7364.pdf&ofn=15\OV2015072a.pdf

def download_file(download_url,name): 
    response = urllib2.urlopen(download_url) 
    with open(name, 'wb') as file: 
     file.write(response.read()) 

download_file('http://www.epi.sk/Main/Download.aspx?fn=\OV\15\OV2015072a$ce10308b-264c-400a-81ad-e643c08a7364.pdf&ofn=15\OV2015072a.pdf','files.pdf') 

Вы знаете, где эта проблема может быть?

ответ

3

Один из ваших обратной косой черты вызывает часть вашей строки следует интерпретировать как последовательность эвакуации:

'http://www.epi.sk/Main/Download.aspx?fn=\OV\15\OV2015072a$ce10308b-264c-400a-81ad-e643c08a7364.pdf&ofn=15\OV2015072a.pdf' 
              ^^^ 

\15 интерпретируется последовательность эвакуации для возврата каретки:

>>> '\15' 
'\r' 

сделать введите исходную строку, предварительно добавив ее r, и Python не будет интерпретировать эти управляющие последовательности:

>>> r'\15' 
'\\15' 
+0

Согласен. Пожалуйста, измените строку на необработанную строку, поэтому python не думает, что вы пытаетесь использовать escape-последовательность. – bgm387

Смежные вопросы