Загрузка файлов с помощью Python Urllib, Urllib2 - PullRequest
1 голос
/ 22 января 2011

Я пытаюсь загрузить файлы с веб-сайта, используя urllib, как описано в этой теме: текст ссылки

import urllib
urllib.urlretrieve ("http://www.example.com/songs/mp3.mp3", "mp3.mp3")

Я могу загрузить файлы (в основном PDF), но всеЯ получаю поврежденные файлы, которые нельзя открыть.Я подозреваю, что это потому, что веб-сайт требует входа в систему.

Как можно изменить вышеуказанную функцию для обработки файлов cookie?Я уже знаю имена полей формы, которые содержат информацию об имени пользователя и пароле.Когда я печатаю возвращаемые значения urlretrieve, я получаю сообщения типа:

a, b = urllib.urlretrieve ("http://www.example.com/songs/mp3.mp3", "mp3.mp3")
print a, b

>> **cache-control:** no-cache, no-store, must-revalidate, s-maxage=300, proxy-revalida
te

>> **connection:** close

Я могу вручную загрузить файлы, если введу их URL в браузере.Спасибо

Ответы [ 2 ]

1 голос
/ 22 января 2011

Первый urllib2 фактически поддерживает файлы cookie, и обработка файлов cookie должна быть простой, во-вторых, вы можете проверить, какой тип файла вы скачали. Например. AFAIK все mp3 начинается с байтов "ID3"

import cookielib, urllib2
cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
r = opener.open("http://example.com/")
0 голосов
/ 22 января 2011

Возможно, сервер, который вы запрашиваете, ищет определенные сообщения заголовка, например, User-Agent. Вы можете попробовать имитировать поведение браузера, отправив дополнительные заголовки.

...