我已经非常熟悉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
来实现它。