Я заинтересован в использовании Python для автоматизации определенных задач. В частности, я хотел бы использовать Python для взаимодействия с веб-сайтом для выполнения таких задач, как получение конкретной информации со страницы, выполнение запроса (данные POST и чтение ответа), а также загрузка и выгрузка файлов. До сих пор мне удавалось использовать Python только для получения HTML-кода со страницы с помощью urllib2. Следующее, что я попробовал, это отправить запрос на страницу; Я сделал несколько попыток, но все они потерпели неудачу.
>>> import urllib2
>>> import urllib
>>> url = "http://www.stackoverflow.com/"
>>> values = {}
>>> values["input"] = "foo"
>>> data = urllib.urlencode(values)
>>> request = urllib2.Request(url + "search/", data)
>>> response = urllib2.urlopen(request)
>>> html = response.read()
>>> print html
Пока я понимаю, что мне нужно создать словарь с именами полей и входных данных и закодировать его с помощью urllib.urllencode(values). Затем мне нужно сделать запрос с urllib2.Request(theUrlReceiveTheRequest, data, headers), который, если только указан URL-адрес, будет только GET, но, если предоставлены данные, будет POST, и могут быть предоставлены заголовки, которые могут замаскировать программу как распространенный браузер, такой как Firefox или IE. Затем я получаю ответ с urllib2.urlopen(request), который возвращает файл, подобный объекту, который, следовательно, я могу читать(). Насколько я понимаю, я также могу использовать urllib2.build_opener(), который может получать обработчики (которые могут обрабатывать файлы cookie, перенаправления, аутентификацию и т. д.) и добавлять заголовки с помощью .addheaders("User-Agent", ""). Я хотел бы иметь возможность в конечном итоге делать (и понимать) все эти вещи, но, во-первых, я просто хотел бы отправить форму.В приведенном выше коде из моего интерактивного сеанса с Python я следовал правильной процедуре? (Я пытался ввести поиск «foo» в поле поиска на первой странице stackoverflow.)