Найти - Пользователи
Полная версия: Загрузка изображения Вконтакте
Начало » Python для новичков » Загрузка изображения Вконтакте
1 2
Mozart
Появилась потребность постить некоторые изображения на стену, для того что бы их прикрепить к посту, как я понял, они сначала загружаются на сервер контакта.
С авторизацией я уже разобрался, использую библиотеки urllib и urllib2 для выполнения всех операций.
Раньше я никогда не сталкивался с загрузкой файлов на сервер и с multipart/form-encode, поэтому хочу попросить у вас некоторой помощи.

Я соснифал запросы идущие на сервер при загрузке фото с компьютера, вот что получается:

1) Вот что идет в заголовках при загрузки картинки на сервер - http://gyazo.com/44ed1e5e4e917d502d2bb925c28831e8
Т.е. как я понял загрузка идет на сервер cs309426.vk.com

2) Вот то что отправляется постом в этом же запросе - http://gyazo.com/67ee37176e1060e5082176313c2274b4
Как я понимаю это какое то представление картинки.

3) Но самое интересное это то, что в ответ я ничего не получаю:
http://gyazo.com/07ca90a26fcb5875d727e48a834b8080
Т.е. я думал что в ответ я получу ссылку на картинку, но ответ пуст, т.е. как бы картинка загружена и все …

4) Но потом идет следующий запрос на al_photos.php вот с такими заголовками - http://gyazo.com/2c5b88009e79aa309fee70b3870a13c4
и таким постом - http://gyazo.com/3375c8aa88d6ed2f4aa9c0b903aeb43b
где в параметре “photos” много непонятных значений, и откуда они берутся ума не приложу.
И вот уже в этом запросе я получаю ответ с двумя ссылками на свою загруженную картинку -
http://gyazo.com/03e837a7e0a00f3c0bb77637cb6d5b25

———————————–

Исходя из этого хотелось бы спросить, каким образом мне загружать картинки на сервер, я склоняюсь к методу описанному в низу этой статьи - http://www.doughellmann.com/PyMOTW/urllib2/, тем более находил тут на форуме такие же решения, правда для твиттера. Но даже если у меня получится загрузить фото на сервер то как получить ссылку на него, ведь в ответе этого запроса ничего не отдается?

Спасибо за советы …
odnochlen
Выкинь urllib и возьми requests или grab.

HttpFox ты уже поставил, щелкни на вкладке post data на raw, скопируй запрос в блокнтот и вырежи данные картинки, потом оттуда сможешь восстановить post запрос.
Mozart
В смысле здесь - http://gyazo.com/b930e3f09481e9ccf0ae816200b27c28
кликнуть на Copy Row и вставить то что скопировалось в блокнот?

И что значит вырезать данные картинки? Название файла и open(img, “rb”) ?

Насчет requests и grab посмотрю, спасибо
odnochlen
Copy all rows. После “photo”;filename и до следующего ———————- по идее должно идти содержание картинки, его вырезаешь, чтобы экран не засоряло.
GaiveR
К слову у вк есть api, используйте его - vk api
Mozart
Нужно именно так разобраться как заливать изображения на сервер, без api …
Mozart
Выбор пал на библиотеку Grab, но сразу же возникла проблема при установке:

Автор рекомендует скачивать именно ихнюю сборку pycurl, вот отсюда - http://grablib.org/static/pycurl-ssl-7.19.0.win32-py2.7.msi

Но проблема в том, что под мой компьютер подходят только win-amd64 приложения, другие не работают.
Естественно после установки pycurl'a и попытки его импорта я получаю вот такую простыню - http://gyazo.com/c5ed07d63525f35c89f3e09a80fae798

lxml я установил вот эту - lxml-3.0.1.win-amd64-py2.7.‌exe
Либа прекрасно работает

Grab я так же установил, но из за того что не работает pycurl получаю тоже самое - http://gyazo.com/4cf1d5fb74c0b99295f89556ef4e98dd


Так то я могу скачать нужную мне сборку pycurl вот отсюда же - http://www.lfd.uci.edu/~gohlke/pythonlibs/, но автор говорит что нужна именно его сборка, поэтому я в растерянности …

Может кто нибудь подсказать решение проблемы?
Заранее спасибо.
odnochlen
Попробуй, мож получится. Или можешь requests взять, у него функционал очень похожий.

А почему под x64 не ставятся 32 битные модули?
reclosedev
odnochlen
А почему под x64 не ставятся 32 битные модули?
Python видимо 64 битный.
Mozart
Чтобы избежать таких проблем, и если в будущем понадобится создание *.exe, то лучше сразу поставить 32 битный Python и использовать 32 битные модули. Проверено, работает на Win7 x64.
Mozart
Поставил pycurl amd64, Grab воспринял его нормально вроде, отослал несколько пост запросов на разные сайты, данные не теряются, все работает, вроде бы все в порядке :)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB