1) Обменник - rghost
• В начале попробовал залить файл с помощью обработки форм в Grab, все получилось -
g = Grab()
g.setup(log_file='C:\\Python27\\logging\\res.html')
g.go('http://rghost.ru/')
g.choose_form(1)
g.set_input('file', UploadFile('C:\\Arbitraje\\vkontakte\\ART\\str.jpg'))
g.submit()
g.response.url # 'http://rghost.net/41181803'
Тут на выходе сразу имеем URL с загруженной картинкой
• Теперь тоже самое, но с помощью POST запроса, соснифал то что происходит при отправке файла на сервер - http://gyazo.com/02446e8c6a1016761ca484c5131f03b8 и http://gyazo.com/a7ebe15eba664713532457d87542d1e5
В ответ на это сервер отдает ссылку с загруженным файлом - http://gyazo.com/410b0e559ce652bdd917cf14d0e9a337
Мой вариант запроса исходя из инструкции отправки файлов по докам - http://grablib.org/docs/grab/http_methods.html
Вот мой код -
g = Grab()
g.setup(log_file='C:\\Python27\\logging\\res.html')
g.go('http://rghost.ru/')
g.response.url # Почему то меня перекинет на .net домен, ну ладно - 'http://rghost.net/'
url = re.findall(r"action=\"(http.+?)\"\senctype=\"mul", g.response.body, re.S)[0] # Выдираем сервер для заливки файла, тут url = 'http://pion.rghost.net/files'
g.setup(multipart_post={'foo': 'bar', 'image': UploadFile('C:\\Arbitraje\\vkontakte\\ART\\str.jpg')}) # Подготавливаем запрос
g.go(url) # Отправляем запрос
g.response.url #http://rghost.net/ ...
В итоге меня перекидывает обратно на главную страницу. Может быть кто подскажет что я не так делаю? Очень уж хочется разобраться с тем, как отправлять файлы POST запросами, особенно учитывая то, что не везде где мне нужно отправить файл есть формы, или же они не работают.
• И еще меня интересует вопрос, в опции multipart_post используется словарь со значениями которые я не понимаю, к примеру ‘foo’: bar' - что это означает?
Или ‘image’: UploadFile - почему именно ‘image’ а не ‘file’ - к примеру?
Спасибо за ответы …