具有目标属性的表单-如何避免使用Python POST请求创建新窗口?

时间:2019-05-15 18:03:20

标签: python http post python-requests html-form-post

我已经非常熟悉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标签中的{1}}属性,表单提交会重新加载页面并显示搜索结果。

我比较了使用Firefox和使用Python post request方法时的请求主体,它们是相同的。我没有丢失任何表单字段。 (否则响应不会是200 ...)

我要检索搜索结果。

我错过了什么吗?我该如何使用form?我知道,有requests。通过从新窗口中获取结果,我已经使用Selenium使其工作了,但是我试图仅通过Selenium来实现它。

0 个答案:

没有答案