scrapy 2.3 FormRequest对象
FormRequest类扩展了基 Request
具有处理HTML表单的功能。它使用 lxml.html forms 使用表单数据预填充表单域的步骤 Response
物体。
- class
scrapy.http.
FormRequest
(url[, formdata, ...]) 这个
FormRequest
类将新的关键字参数添加到__init__
方法。其余参数与 Request
在这里没有记录。- 参数
formdata (dict or collections.abc.Iterable) -- 是包含HTML表单数据的字典(或可为(键、值)元组),这些数据将被URL编码并分配给请求主体。
这个
FormRequest
除了标准之外,对象还支持以下类方法 Request
方法:- classmethod
from_response
(response[, formname=None, formid=None, formnumber=0, formdata=None, formxpath=None, formcss=None, clickdata=None, dont_click=False, ...]) 返回新的
FormRequest
对象,其表单字段值预填充在HTML中<form>
包含在给定响应中的元素。有关示例,请参见 使用formRequest.from_response()模拟用户登录 .默认情况下,策略是在任何看起来可单击的窗体控件上自动模拟单击,如
<input type="submit">
. 尽管这非常方便,而且常常是所需的行为,但有时它可能会导致难以调试的问题。例如,当处理使用javascript填充和/或提交的表单时,默认 from_response()
行为可能不是最合适的。要禁用此行为,可以设置dont_click
参数True
. 此外,如果要更改单击的控件(而不是禁用它),还可以使用clickdata
参数。警告
对于选项值中有前导空格或尾随空格的select元素,使用此方法将不起作用,因为 bug in lxml ,应在LXML 3.8及更高版本中修复。
- 参数
response (
Response
object) -- 包含用于预填充表单字段的HTML表单的响应formname (str) -- 如果给定,将使用名称属性设置为该值的表单。
formid (str) -- 如果给定,将使用ID属性设置为该值的表单。
formxpath (str) -- 如果给定,将使用与xpath匹配的第一个表单。
formcss (str) -- 如果给定,将使用与CSS选择器匹配的第一个表单。
formnumber (int) -- 当响应包含多个表单时要使用的表单数。第一个(也是默认值)是
0
.formdata (dict) -- 要在表单数据中重写的字段。如果响应中已存在字段
<form>
元素,其值将被此参数中传递的值重写。如果此参数中传递的值是None
,即使响应中存在该字段,该字段也不会包含在请求中。<form>
元素。clickdata (dict) -- 用于查找单击的控件的属性。如果没有给出,将提交表单数据,模拟单击第一个可单击元素。除了HTML属性之外,控件还可以通过其相对于表单内其他可提交输入的基于零的索引进行标识,方法是
nr
属性。dont_click (bool) -- 如果为真,则表单数据将在不单击任何元素的情况下提交。
该类方法的其他参数直接传递给 FormRequest
__init__
方法。