scrapy 2.3 FormRequest對象

2021-06-09 14:40 更新

FormRequest類擴(kuò)展了基 ?Request? 具有處理HTML表單的功能。它使用 lxml.html forms 使用表單數(shù)據(jù)預(yù)填充表單域的步驟 ?Response? 物體。

classscrapy.http.FormRequest(url[, formdata...])

這個 ?FormRequest? 類將新的關(guān)鍵字參數(shù)添加到 __init__ 方法。其余參數(shù)與 ?Request? 在這里沒有記錄。

參數(shù)

formdata (dict or collections.abc.Iterable) -- 是包含HTML表單數(shù)據(jù)的字典(或可為(鍵、值)元組),這些數(shù)據(jù)將被URL編碼并分配給請求主體。

這個 ?FormRequest? 除了標(biāo)準(zhǔn)之外,對象還支持以下類方法 ?Request? 方法:

classmethodfrom_response(response[, formname=Noneformid=Noneformnumber=0formdata=Noneformxpath=Noneformcss=Noneclickdata=Nonedont_click=False...])

返回新的 ?FormRequest? 對象,其表單字段值預(yù)填充在HTML中 <form> 包含在給定響應(yīng)中的元素。有關(guān)示例,請參見 使用formRequest.from_response()模擬用戶登錄 .

默認(rèn)情況下,策略是在任何看起來可單擊的窗體控件上自動模擬單擊,如 <input type="submit"> . 盡管這非常方便,而且常常是所需的行為,但有時它可能會導(dǎo)致難以調(diào)試的問題。例如,當(dāng)處理使用javascript填充和/或提交的表單時,默認(rèn) ?from_response() ?行為可能不是最合適的。要禁用此行為,可以設(shè)置 dont_click 參數(shù) True . 此外,如果要更改單擊的控件(而不是禁用它),還可以使用 clickdata 參數(shù)。

警告

對于選項值中有前導(dǎo)空格或尾隨空格的select元素,使用此方法將不起作用,因為 bug in lxml ,應(yīng)在LXML 3.8及更高版本中修復(fù)。

參數(shù)
  • response (?Response? object) -- 包含用于預(yù)填充表單字段的HTML表單的響應(yīng)

  • formname (str) -- 如果給定,將使用名稱屬性設(shè)置為該值的表單。

  • formid (str) -- 如果給定,將使用ID屬性設(shè)置為該值的表單。

  • formxpath (str) -- 如果給定,將使用與xpath匹配的第一個表單。

  • formcss (str) -- 如果給定,將使用與CSS選擇器匹配的第一個表單。

  • formnumber (int) -- 當(dāng)響應(yīng)包含多個表單時要使用的表單數(shù)。第一個(也是默認(rèn)值)是 0 .

  • formdata (dict) -- 要在表單數(shù)據(jù)中重寫的字段。如果響應(yīng)中已存在字段 <form> 元素,其值將被此參數(shù)中傳遞的值重寫。如果此參數(shù)中傳遞的值是 None ,即使響應(yīng)中存在該字段,該字段也不會包含在請求中。 <form> 元素。

  • clickdata (dict) -- 用于查找單擊的控件的屬性。如果沒有給出,將提交表單數(shù)據(jù),模擬單擊第一個可單擊元素。除了HTML屬性之外,控件還可以通過其相對于表單內(nèi)其他可提交輸入的基于零的索引進(jìn)行標(biāo)識,方法是 nr 屬性。

  • dont_click (bool) -- 如果為真,則表單數(shù)據(jù)將在不單擊任何元素的情況下提交。

該類方法的其他參數(shù)直接傳遞給 FormRequest __init__ 方法。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號