форма с целевым атрибутом - Как избежать появления нового окна с Python-запросом POST? - PullRequest
0 голосов
/ 15 мая 2019

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

<form name="foo" action="/foo/bar.pl" method="post" onsubmit="return validate_foo(this)" target="this_is_the_problem">...</form>

При использовании браузера поведение таково, что при нажатии кнопки отправки открывается новое окно, которое идентично исходному окну, за исключением того, что оно содержит все результаты поиска, тогда как исходное окно остается без изменений. Используя этот код Python:

from requests import Session
session = Session()
...
url = '...'
payload = { ... }
response = session.post(url, data=payload)

Ответ имеет статус 200 (и не перенаправляет в истории), но содержимое - это просто «начальная» страница поиска с формой, но без результатов поиска.

Я предполагаю (и могу ошибаться), что это связано с атрибутом target в форме. Когда я использую Firefox для проверки элемента и просто удаляю атрибут target из тега form отправка формы перезагружает страницу и отображаются результаты поиска.

Я сравнил тела запросов при использовании Firefox и при использовании моего метода пост-запроса Python, и они идентичны. Я не пропускаю ни одного поля формы. (В противном случае ответ не будет 200 ...)

Я хочу получить результаты поиска.

Я что-то упустил? Как я могу сделать это с requests? Я знаю, есть Selenium. Я уже заставил это работать, используя Selenium, получая результаты из нового окна, но я пытаюсь заставить это произойти только с requests.

...