Python Online Form Submision - PullRequest
       17

Python Online Form Submision

0 голосов
/ 15 марта 2011

Я использую Python 2.7.1 для доступа к онлайн-сайту. Мне нужно загрузить URL, а затем отправить запрос POST на этот URL, который заставляет веб-сайт перенаправить на новый URL. Затем я хотел бы разместить некоторые данные на новый URL. Это было бы легко сделать, за исключением того, что рассматриваемый веб-сайт не позволяет пользователю использовать браузерную навигацию. (Например, вы не можете просто ввести URL-адрес новой страницы или нажать кнопку «Назад», вы должны прийти туда, нажав кнопку «Далее» на веб-сайте). Поэтому, когда я пытаюсь это:

import urllib, urllib2, cookielib

url = "http://www.example.com/"

jar = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(jar))
form_data_login = "POSTDATA"
form_data_try = "POSTDATA2"
resp = opener.open(url, form_data_login)
resp2 = opener.open(resp.geturl(), form_data_try)

print resp2.read()

Я получаю сообщение "Не использовать кнопку назад в вашем браузере" с веб-сайта в resp2. Есть ли способ отправить данные на веб-сайт или мне даст? Заранее спасибо!

РЕДАКТИРОВАТЬ: Я посмотрю в Mechanize, так что спасибо за этот указатель. На данный момент, однако, есть ли способ сделать это только с Python?

Ответы [ 2 ]

0 голосов
/ 15 марта 2011

Вы, вероятно, попадаете на эту страницу, публикуя что-либо с помощью этой кнопки Далее.Вам нужно будет посмотреть параметры POST, отправленные при нажатии этой кнопки, и добавить все эти параметры публикации к вашему вызову.

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

0 голосов
/ 15 марта 2011

Вы смотрели на механизировать ? Я считаю, что он обладает необходимой вам функциональностью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...