HTML表單API?

HTML文檔中的表單表示為 mechanize.HTMLForm .每個窗體都是控件的集合。不同類型的控制由下面記錄的不同類別表示。

class mechanize.HTMLForm(action, method='GET', enctype='application/x-www-form-urlencoded', name=None, attrs=None, request_class=<class 'mechanize._request.Request'>, forms=None, labels=None, id_to_labels=None, encoding=None)[源代碼]?

基類:object

表示單個HTML<form>。<form>元素。

表單由一系列控件組成,這些控件通常具有名稱,并且可以具有各種值。各種類型控件的值代表不同的值:文本、零或多個選項中的一個或多個選項,以及要上載的文件??梢詥螕裟承┛丶峤槐韱?,可單擊控件的值有時包括單擊的坐標。

表單可以填寫要返回到服務器的數據,然后提交,使用click方法生成適合傳遞到的請求對象 mechanize.urlopen() (或單擊“請求數據”或單擊“與第三方代碼集成的成對方法”)。

通常,不會直接創建htmlform實例。相反,它們是在使用mechanize瀏覽器瀏覽頁面時自動創建的。但是,如果您自己構造htmlform對象,請注意,只有在調用fixup方法之后,才能正確初始化htmlform實例。參見 mechanize.ListControl 因為這是必需的。

為窗體(窗體)編制索引 ["control_name"] )返回命名控件的value屬性。表單索引(表單)的分配 ["control_name"] =something)相當于指定控件的value屬性的賦值。如果需要比只提供控件的名稱更具體,請使用set_value和get_value方法。

listcontrol值是項名稱的列表(具體來說,是選定的項的名稱,而不是禁用的項的名稱,因此是“成功的”——即,使數據返回到服務器)。列表項的名稱是對應HTML元素的“value”屬性的值。

例子::

<INPUT type="CHECKBOX" name="cheeses" value="leicester"></INPUT>
<INPUT type="CHECKBOX" name="cheeses" value="cheddar"></INPUT>

定義一個名為“cheeses”的復選框控件,該控件有兩個項,分別名為“leicester”和“cheddar”。

另一個例子:

<SELECT name="more_cheeses">
  <OPTION>1</OPTION>
  <OPTION value="2" label="CHEDDAR">cheddar</OPTION>
</SELECT>

定義一個名為“more-cheeses”的select控件,該控件有兩個項,分別命名為“1”和“2”(因為選項元素的值html屬性默認為元素內容——請參見 mechanize.SelectControl 有關這些默認規則的更多信息)。

要選擇、取消選擇或以其他方式操作單個列表項,請使用 mechanize.HTMLForm.find_control()mechanize.ListControl.get() 方法。要設置整個值,請像對任何其他控件那樣執行:使用索引或 set_value/get_value 方法。

例子:

# select *only* the item named "cheddar"
form["cheeses"] = ["cheddar"]
# select "cheddar", leave other items unaffected
form.find_control("cheeses").get("cheddar").selected = True

某些控件(不帶“多屬性”的“單選”和“選擇”)一次只能選擇零個或一個項。某些控件(復選框和具有多個屬性的Select)一次可以選擇多個項。要設置ListControl的整個值,請將序列分配給表單索引:

form["cheeses"] = ["cheddar", "leicester"]

如果listcontrol不是多個選擇,則指定的列表的長度必須為1。

要分別檢查控件是否有項、項是否被選中或項是否成功(選中和未禁用):

"cheddar" in [item.name for item in form.find_control("cheeses").items]
"cheddar" in [item.name for item in form.find_control("cheeses").items
                and item.selected]
"cheddar" in form["cheeses"]
# or
"cheddar" in form.get_value("cheeses")

請注意,某些列表項可能被禁用(請參見下文)。

注意以下錯誤:

form[control_name] = control_value
assert form[control_name] == control_value  # not necessarily true

原因是那張表 [control_name] 總是按照在HTML中列出的順序給出列表項。

列表項(因此也可以是列表值)可以根據列表項標簽來引用,而不是使用適當的標簽參數來引用列表項名稱。請注意,每個項目可能有幾個標簽。

選項內容、標簽和值的默認值問題有些復雜:請參見 mechanize.SelectControlmechanize.ListControl.get_item_attrs() 如果你認為你需要知道。

控件可以禁用或只讀。在這兩種情況下,只有清除這些標志(參見下面的示例),才能更改控件的值?!敖谩笔菫g覽器通常通過“灰顯”控件來表示的狀態。禁用的控件不是“成功的”——它們不會導致數據返回到服務器。只讀控件通常作為只讀文本框出現在瀏覽器中。只讀控件成功。也可以禁用列表項。嘗試選擇或取消選擇禁用的項目失敗,出現attributeError。

如果許多控件都是只讀的,則執行此操作可能很有用:

form.set_all_readonly(False)

清除控件的Value屬性,使其不成功(直到隨后設置了值):

form.clear("cheeses")

更多示例:

control = form.find_control("cheeses")
control.disabled = False
control.readonly = False
control.get("gruyere").disabled = True
control.items[0].selected = True

有關進一步的文檔,請參見各種控制類。許多方法使用name、type、kind、id、label和nr參數來指定要對其操作的控件:請參見 mechanize.HTMLForm.find_control() .

如果找不到指定的控件,則引發ControlNotFoundError(ValueError的子類)。這包括找到非listcontrol的情況,但方法(例如set)需要listcontrol。如果找不到列表項,將引發itemNotFoundError(valueError的子類)。如果試圖選擇多個項,但控件不允許這樣做,或者調用set/get-single,并且控件包含多個項,則會引發ItemCounterRor(ValueError的子類)。如果控件或項是只讀的或禁用的,并且試圖更改其值,則會引發attributeError。

安全說明:請記住,如果您直接或間接地對HTMLForm實例進行pickle,那么您存儲在HTMLForm實例中的任何密碼都將被保存到磁盤中。最簡單的解決方案是避免酸洗htmlform對象。您也可以在填寫任何密碼之前進行泡菜,或者在泡菜之前將密碼設置為“”。

公共屬性:

變量
  • action -- 完全(絕對URI)表單操作

  • method -- “獲取”或“發布”

  • enctype -- 表單傳輸編碼MIME類型

  • name -- 表單名稱(如果未指定名稱,則無)

  • attrs -- 將原始HTML表單屬性映射到其值的字典

  • controls -- 控件實例列表;不要更改此列表(相反,調用form.new_control生成控件并將其添加到表單中,或者如果已經有控件實例,則調用control.add_to_表單)

填表方法:

這些方法中的大多數都有非常相似的參數。參見 mechanize.HTMLForm.find_control() 有關名稱、類型、種類、標簽和nr參數的詳細信息。

def find_control(self,
                name=None, type=None, kind=None, id=None,
                predicate=None, nr=None, label=None)

get_value(name=None, type=None, kind=None, id=None, nr=None,
        by_label=False,  # by_label is deprecated
        label=None)
set_value(value,
        name=None, type=None, kind=None, id=None, nr=None,
        by_label=False,  # by_label is deprecated
        label=None)

clear_all()
clear(name=None, type=None, kind=None, id=None, nr=None, label=None)

set_all_readonly(readonly)

僅應用于FileControls的方法:

add_file(file_object,
     content_type="application/octet-stream", filename=None,
     name=None, id=None, nr=None, label=None)

僅適用于可單擊控件的方法:

click(name=None, type=None, id=None, nr=0, coord=(1,1), label=None)
click_request_data(name=None, type=None, id=None, nr=0, coord=(1,1),
                label=None)
click_pairs(name=None, type=None, id=None, nr=0, coord=(1,1),
                label=None)
add_file(file_object, content_type=None, filename=None, name=None, id=None, nr=None, label=None)[源代碼]?

添加要上載的文件。

參數
  • file_object -- 類似文件的對象(具有讀取方法),從中讀取要上載的數據

  • content_type -- 要上載的數據的MIME內容類型

  • filename -- 要傳遞到服務器的文件名

如果文件名為“無”,則不會向服務器發送文件名。

如果內容類型為“無”,則根據文件名和從文件對象讀取的數據猜測內容類型。

目前,猜測的內容類型總是application/octet流。

請注意文件上載控件的以下有用HTML屬性(請參閱HTML 4.01規范第17節):

  • accept :內容類型的逗號分隔列表

    服務器將正確處理;您可以使用它篩選出不符合要求的文件。

  • size :xxx IIRC,這表示

    需要多個或單個文件

  • maxlength :xxx以字節為單位的最大內容長度提示?

clear(name=None, type=None, kind=None, id=None, nr=None, label=None)[源代碼]?

清除控件的值屬性。

因此,在隨后設置值之前,受影響的控制不會成功。在只讀控件上引發attributeError。

clear_all()[源代碼]?

清除窗體中所有控件的值屬性。

mechanize.HTMLForm.clear()

click(name=None, type=None, id=None, nr=0, coord=(1, 1), request_class=<class 'mechanize._request.Request'>, label=None)[源代碼]?

返回單擊控件所產生的請求。

請求對象是一個Mechanical.Request實例,可以將其傳遞給Mechanic.Urlopen。

只能單擊某些控件類型(輸入/提交&按鈕/提交按鈕和圖像)。

將根據名稱、類型和nr參數單擊第一個可單擊控件(至于find_control)。如果沒有指定名稱、類型、ID或編號,并且沒有可單擊的控件,則將返回表單當前未單擊狀態的請求。

如果指定了名稱、類型、ID或NR中的任何一個,但找不到匹配的控件,則會引發indexError。如果htmlform具有無法識別的enctype屬性,則會引發ValueError。

您可以選擇指定要單擊的坐標,這只會在單擊圖像時產生差異。

click_pairs(name=None, type=None, id=None, nr=0, coord=(1, 1), label=None)[源代碼]?

至于click請求數據,返回(key,value)對的列表。

可以將此列表用作urlib.urlencode的參數。這通常只有在使用httplib或urllib而不是mechanize時才有用。如果您想手動調整鍵和/或值,它也可能很有用,但這不必。否則,請使用單擊方法。

請注意,此方法僅適用于mime類型x-www-form-urlencoded的表單。尤其是,它不會返回文件上載所需的信息。如果您需要上傳文件而不使用mechanize,請使用單擊“請求”數據。

click_request_data(name=None, type=None, id=None, nr=0, coord=(1, 1), request_class=<class 'mechanize._request.Request'>, label=None)[源代碼]?

至于click方法,但返回一個元組(url、data、headers)。

您可以使用此數據向服務器發送請求。如果您使用的是httplib或urllib,而不是mechanize,那么這是很有用的。否則,請使用單擊方法。

find_control(name=None, type=None, kind=None, id=None, predicate=None, nr=None, label=None)[源代碼]?

找到并返回表單中的某些特定控件。

必須至少提供name、type、kind、predicate和nr參數中的一個。如果找不到匹配的控件,則引發ControlNotFoundError。

如果指定了名稱,則控件必須具有指示的名稱。

如果指定了類型,則控件必須具有指定的類型(除了可能用于<input>html標記的類型:“text”、“password”、“hidden”、“submit”、“image”、“button”、“radio”、“checkbox”、“file”之外,我們還具有“reset”、“buttonbutton”、“submitbutton”、“resetbutton”、“textarea”、“selec”t”)。

如果指定了Kind,則控件必須屬于指定的組,每個組都滿足特定的接口。類型有“文本”、“列表”、“多列表”、“單個列表”、“可單擊”和“文件”。

如果指定了ID,則控件必須具有指示的ID。

如果指定了謂詞,則控件必須與該函數匹配。謂詞函數作為單個參數傳遞給控件,并應返回一個布爾值,指示控件是否匹配。

nr,如果提供,是控件的序列號(其中0是第一個)。注意,控件0是第一個匹配所有其他參數的控件(如果提供);它不一定是表單中的第一個控件。如果沒有提供nr,則如果多個控件與其他參數匹配,則會引發歧義錯誤。

如果指定了標簽,則控件必須具有此標簽。請注意,收音機控件和復選框從來沒有標簽:它們的項有標簽。

fixup()[源代碼]?

添加所有控件后使窗體正?;?。

這通常由ParseFile和ParseResponse調用。除非您正在構建自己的控制實例,否則不要將其稱為您自己。

將所有控件添加到表單后,只應調用一次此方法。

get_value(name=None, type=None, kind=None, id=None, nr=None, by_label=False, label=None)[源代碼]?

控件的返回值。

如果只提供名稱和值參數,則等效于

form[name]
get_value_by_label(name=None, type=None, kind=None, id=None, label=None, nr=None)[源代碼]?

所有參數都應按名稱傳遞。

new_control(type, name, attrs, ignore_unknown=False, select_default=False, index=None)[源代碼]?

向窗體中添加新控件。

這通常被稱為mechanize。除非您正在構建自己的控件實例,否則不要自己調用它。

請注意,表示項列表的控件是由僅包含單個列表項的控件生成的。參見 mechanize.ListControl 更多信息。

參數
  • type -- 控制類型(見 mechanize.Control 對于列表)

  • attrs -- 控件的HTML屬性

  • ignore_unknown -- 如果為true,請對未知類型的控件使用虛擬控件實例;否則,請使用textcontrol

  • select_default -- 對于單選和多選選擇控件,如果不存在“selected”HTML屬性,則選擇第一個項作為默認項(此默認設置在調用htmlform.fixup方法時發生)

  • index -- HTML中相應元素的索引(有關動機,請參閱moreformtests.test_interspersed_controls)

possible_items(name=None, type=None, kind=None, id=None, nr=None, by_label=False, label=None)[源代碼]?

返回指定控件可以獲取的所有值的列表。

set(selected, item_name, name=None, type=None, kind=None, id=None, nr=None, by_label=False, label=None)[源代碼]?

選擇/取消選擇命名列表項。

參數

selected -- 布爾選擇狀態

set_single(selected, name=None, type=None, kind=None, id=None, nr=None, by_label=None, label=None)[源代碼]?

在只有一個項的控件中選擇/取消選擇列表項。

如果控件有多個列表項,將引發itemCounterRor。

這只是一個方便的方法,所以您不需要知道項的名稱——這些單個項控件中的項名稱通常是一些無意義的東西,如“1”或“on”。

例如,如果一個復選框只有一個名為“on”的項,則以下兩個調用是等效的:

control.toggle("on")
control.toggle_single()
set_value(value, name=None, type=None, kind=None, id=None, nr=None, by_label=False, label=None)[源代碼]?

設置控件的值。

如果只提供名稱和值參數,則等效于

form[name] = value
set_value_by_label(value, name=None, type=None, kind=None, id=None, label=None, nr=None)[源代碼]?

所有參數都應按名稱傳遞。

toggle(item_name, name=None, type=None, kind=None, id=None, nr=None, by_label=False, label=None)[源代碼]?

切換已命名列表項的選定狀態。

toggle_single(name=None, type=None, kind=None, id=None, nr=None, by_label=None, label=None)[源代碼]?

切換控件中只有一個項的列表項的所選狀態。

剩下的就是 mechanize.HTMLForm.set_single()

class mechanize.Control(type, name, attrs, index=None)[源代碼]?

基類:object

HTML表單控件。

HTMLForm包含一系列控件??梢允褂胔tmlform.find_control方法或htmlform.controls屬性訪問htmlform中的控件。

控制實例通常使用parsefile/parseresponse函數構造。如果使用這些函數,可以忽略本段的其余部分。只有在調用Fixup方法后才正確初始化控件。實際上,這只對ListControl實例是嚴格必要的。這是必要的,因為listcontrols是由listcontrols構建的,每個listcontrols只包含一個項,并且它們的初始值只能在序列完成后才能知道。

可接受分配給value屬性的類型和值由子類定義。

如果disabled屬性為true,則表示瀏覽器通常通過“灰顯”控件來表示的狀態。如果disabled屬性為true,則如果試圖更改其值,控件將引發attributeError。此外,根據W3C HTML 4標準的定義,該控件不會被認為是“成功的”——即,它不會為HTMLForm的返回值提供任何數據。單擊*方法。若要啟用控件,請將禁用的屬性設置為假值。

如果readonly屬性為true,則如果試圖更改其值,控件將引發attributeError。若要使控件可寫,請將readonly屬性設置為假值。

所有控件都具有禁用和只讀屬性,而不僅僅是那些可能具有相同名稱的HTML屬性的控件。

在賦值給value屬性時,會引發以下異常:typeError、attributeError(例如,如果不應將value屬性賦值給,因為控件被禁用)和valueError。

如果名稱或值屬性為“無”,或者值為空列表,或者如果控件被禁用,則該控件不成功。

公共屬性:

變量
  • type (str) -- 描述控件類型的字符串(有關允許的值,請參閱htmlform.type2類字典的鍵)(只讀)

  • name (str) -- 控件名稱(只讀)

  • value -- 控制的當前值(子類可以允許單個值、一系列值,或者兩者之一)

  • disabled (bool) -- 禁用狀態

  • readonly (bool) -- 只讀狀態

  • id (str) -- id html屬性值

get_labels()[源代碼]?

返回此控件的所有標簽(標簽實例)。

如果控件被一個<label>標記包圍,則該標記將是第一個標簽;所有由'for'和'id'連接的其他標簽都將按HTML中顯示的順序排列。

pairs()[源代碼]?

返回適合傳遞到URLENCODE的(鍵、值)對的列表。

class mechanize.ScalarControl(type, name, attrs, index=None)[源代碼]?

基類:mechanize._form_controls.Control

其值不限于某一規定集的控件。

某些scalarControls不接受任何值屬性。否則,只取一個值,該值必須是類似字符串的。

其他只讀公共屬性:

變量

attrs (dict) -- 將控件的原始HTML屬性的名稱映射到其值的字典

get_labels()?

返回此控件的所有標簽(標簽實例)。

如果控件被一個<label>標記包圍,則該標記將是第一個標簽;所有由'for'和'id'連接的其他標簽都將按HTML中顯示的順序排列。

pairs()?

返回適合傳遞到URLENCODE的(鍵、值)對的列表。

class mechanize.TextControl(type, name, attrs, index=None)[源代碼]?

基類:mechanize._form_controls.ScalarControl

文本輸入控件。

包括HTML元素:輸入/文本、輸入/密碼、輸入/隱藏、文本區域

get_labels()?

返回此控件的所有標簽(標簽實例)。

如果控件被一個<label>標記包圍,則該標記將是第一個標簽;所有由'for'和'id'連接的其他標簽都將按HTML中顯示的順序排列。

pairs()?

返回適合傳遞到URLENCODE的(鍵、值)對的列表。

class mechanize.FileControl(type, name, attrs, index=None)[源代碼]?

基類:mechanize._form_controls.ScalarControl

文件上傳,輸入類型=文件。

filecontrol的value屬性始終為none。改為使用添加文件。

附加公共方法: add_file()

add_file(file_object, content_type=None, filename=None)[源代碼]?

從要上載的指定文件添加數據。如果指定,則在HTTP頭中發送內容類型和文件名。

get_labels()?

返回此控件的所有標簽(標簽實例)。

如果控件被一個<label>標記包圍,則該標記將是第一個標簽;所有由'for'和'id'連接的其他標簽都將按HTML中顯示的順序排列。

pairs()?

返回適合傳遞到URLENCODE的(鍵、值)對的列表。

class mechanize.IgnoreControl(type, name, attrs, index=None)[源代碼]?

基類:mechanize._form_controls.ScalarControl

我們不感興趣的控制。

包括HTML元素:輸入/重置、按鈕/重置、輸入/按鈕、按鈕/按鈕

按照HTML4的術語,這些控件總是不成功的(即,它們不需要任何信息返回到服務器)。

button/button用于為嵌入在HTML中的腳本生成事件。

ignoreControl的value屬性始終為none。

get_labels()?

返回此控件的所有標簽(標簽實例)。

如果控件被一個<label>標記包圍,則該標記將是第一個標簽;所有由'for'和'id'連接的其他標簽都將按HTML中顯示的順序排列。

pairs()?

返回適合傳遞到URLENCODE的(鍵、值)對的列表。

class mechanize.ListControl(type, name, attrs={}, select_default=False, called_as_base_class=False, index=None)[源代碼]?

基類:mechanize._form_controls.Control

表示項序列的控件。

list control的value屬性表示控件中成功的列表項。成功的列表項是已選擇但未禁用的列表項。

listcontrol實現采用length-1值(單個選擇)的列表控件和采用length>1值(多個選擇)的列表控件。

ListControls只接受序列值。有些控件只接受長度為0或1的序列(單選和單選擇)。在這些情況下,如果len(sequence)>1,則會引發itemCounterRor。復選框和多重選擇(具有“多重”HTML屬性的)接受任意長度的序列。

注意以下錯誤:

control.value = some_value
assert control.value == some_value    # not necessarily true

這樣做的原因是,value屬性總是按照在HTML中列出的順序給出列表項。

ListControl項也可以通過其標簽而不是名稱來引用。使用label參數to.get()和.set_value_by_label(),.get_value_by_label()方法。

請注意,雖然select控件以HTML表示,但它不是由select元素(其中包含選項元素,表示單個列表項)表示的,但復選框和收音機不是由 any 元素。相反,這些控件由一組輸入元素表示。例如,這是一個名為“control1”的選擇控件:

<select name="control1">
<option>foo</option>
<option value="1">bar</option>
</select>

這是一個名為“control2”的復選框控件:

<input type="checkbox" name="control2" value="foo" id="cbe1">
<input type="checkbox" name="control2" value="bar" id="cbe2">

復選框或Radio ListControl的ID屬性始終是其第一個元素的ID屬性(例如上面的“cbe1”)。

其他只讀公共屬性:多個。

fixup()[源代碼]?

ListControls是在解析期間從組件列表項(也是ListControls)構建的。應在添加所有項之后調用此方法。參見 mechanize.ListControl 因為這是必需的。

get(name=None, label=None, id=None, nr=None, exclude_disabled=False)[源代碼]?

按名稱或標簽返回項目,必要時用編號消除歧義。

所有參數都必須按名稱傳遞,但“name”除外,它可以用作位置參數。

如果指定了名稱,則該項必須具有指示的名稱。

如果指定了標簽,則項目必須具有一個標簽,其空白壓縮、剝離、文本子字符串與指示的標簽字符串匹配(例如label=“please choose”will match“do please choose an item”)。

如果指定了ID,則該項必須具有指示的ID。

nr是與查詢匹配的項的從0開始的可選索引。

如果nr是默認的無值,并且找到的項多于項,則會引發歧義錯誤。

如果找不到項,或者如果找到項但指定了nr但找不到,則引發itemNotFoundError。

可選排除禁用項。

get_item_attrs(name, by_label=False, nr=None)[源代碼]?

返回單個ListControl項的HTML屬性字典。

描述列表項的HTML元素類型為:選項用于選擇控件,輸入用于其余項。這些元素具有HTML屬性,您可能偶爾想知道這些屬性——例如,“alt”HTML屬性提供了描述該項的文本字符串(圖形瀏覽器通常將其顯示為工具提示)。

返回的字典將HTML屬性名稱映射為值。名稱和值取自原始HTML。

get_item_disabled(name, by_label=False, nr=None)[源代碼]?

獲取ListControl中已命名列表項的禁用狀態。

get_items(name=None, label=None, id=None, exclude_disabled=False)[源代碼]?

按名稱或標簽返回匹配項。

有關參數文檔,請參見.get()的docstring

get_labels()?

返回此控件的所有標簽(標簽實例)。

如果控件被一個<label>標記包圍,則該標記將是第一個標簽;所有由'for'和'id'連接的其他標簽都將按HTML中顯示的順序排列。

get_value_by_label()[源代碼]?

返回由規范化標簽指定的控件值。

pairs()?

返回適合傳遞到URLENCODE的(鍵、值)對的列表。

possible_items(by_label=False)[源代碼]?

已棄用:返回所有可能項的名稱或標簽。

包括禁用項,這可能會誤導某些用例。

set(selected, name, by_label=False, nr=None)[源代碼]?

已棄用:給定名稱或標簽以及可選的消歧索引nr,將匹配項的選擇設置為所選的bool值。

選擇項遵循“get”方法的docstring中描述的行為。

如果該項被禁用,或者該控件被禁用或為只讀,則引發attributeError。

set_all_items_disabled(disabled)[源代碼]?

設置ListControl中所有列表項的禁用狀態。

參數

disabled -- 布爾禁用狀態

set_item_disabled(disabled, name, by_label=False, nr=None)[源代碼]?

在ListControl中設置已命名列表項的禁用狀態。

參數

disabled -- 布爾禁用狀態

set_single(selected, by_label=None)[源代碼]?

已棄用:設置此控件中單個項的選擇。

如果控件不只包含一個項,則引發ItemCounterRor。

BY標簽參數被忽略,并且只包括向后兼容性。

set_value_by_label(value)[源代碼]?

按項目標簽設置控件的值。

值應為應選擇的項標簽的子字符串的字符串的iterable。在執行子字符串匹配之前,原始標簽文本將被空格壓縮(連續空格字符轉換為單個空格字符),并去除前導和尾隨空格。不明確的標簽:只要所有不明確的標簽共享相同的項目名稱(例如選項值),它就不會抱怨。

toggle(name, by_label=False, nr=None)[源代碼]?

已棄用:給定名稱或標簽和可選的消除歧義索引nr,切換匹配項的選擇。

選擇項遵循“get”方法的docstring中描述的行為。

如果該項被禁用,或者該控件被禁用或為只讀,則引發attributeError。

toggle_single(by_label=None)[源代碼]?

已棄用:切換此控件中單個項的選擇。

如果控件不只包含一個項,則引發ItemCounterRor。

BY標簽參數被忽略,并且只包括向后兼容性。

class mechanize.RadioControl(type, name, attrs, select_default=False, index=None)[源代碼]?

基類:mechanize._form_controls.ListControl

蓋子:

輸入/收音機

fixup()[源代碼]?

ListControls是在解析期間從組件列表項(也是ListControls)構建的。應在添加所有項之后調用此方法。參見 mechanize.ListControl 因為這是必需的。

get(name=None, label=None, id=None, nr=None, exclude_disabled=False)?

按名稱或標簽返回項目,必要時用編號消除歧義。

所有參數都必須按名稱傳遞,但“name”除外,它可以用作位置參數。

如果指定了名稱,則該項必須具有指示的名稱。

如果指定了標簽,則項目必須具有一個標簽,其空白壓縮、剝離、文本子字符串與指示的標簽字符串匹配(例如label=“please choose”will match“do please choose an item”)。

如果指定了ID,則該項必須具有指示的ID。

nr是與查詢匹配的項的從0開始的可選索引。

如果nr是默認的無值,并且找到的項多于項,則會引發歧義錯誤。

如果找不到項,或者如果找到項但指定了nr但找不到,則引發itemNotFoundError。

可選排除禁用項。

get_item_attrs(name, by_label=False, nr=None)?

返回單個ListControl項的HTML屬性字典。

描述列表項的HTML元素類型為:選項用于選擇控件,輸入用于其余項。這些元素具有HTML屬性,您可能偶爾想知道這些屬性——例如,“alt”HTML屬性提供了描述該項的文本字符串(圖形瀏覽器通常將其顯示為工具提示)。

返回的字典將HTML屬性名稱映射為值。名稱和值取自原始HTML。

get_item_disabled(name, by_label=False, nr=None)?

獲取ListControl中已命名列表項的禁用狀態。

get_items(name=None, label=None, id=None, exclude_disabled=False)?

按名稱或標簽返回匹配項。

有關參數文檔,請參見.get()的docstring

get_labels()[源代碼]?

返回此控件的所有標簽(標簽實例)。

如果控件被一個<label>標記包圍,則該標記將是第一個標簽;所有由'for'和'id'連接的其他標簽都將按HTML中顯示的順序排列。

get_value_by_label()?

返回由規范化標簽指定的控件值。

pairs()?

返回適合傳遞到URLENCODE的(鍵、值)對的列表。

possible_items(by_label=False)?

已棄用:返回所有可能項的名稱或標簽。

包括禁用項,這可能會誤導某些用例。

set(selected, name, by_label=False, nr=None)?

已棄用:給定名稱或標簽以及可選的消歧索引nr,將匹配項的選擇設置為所選的bool值。

選擇項遵循“get”方法的docstring中描述的行為。

如果該項被禁用,或者該控件被禁用或為只讀,則引發attributeError。

set_all_items_disabled(disabled)?

設置ListControl中所有列表項的禁用狀態。

參數

disabled -- 布爾禁用狀態

set_item_disabled(disabled, name, by_label=False, nr=None)?

在ListControl中設置已命名列表項的禁用狀態。

參數

disabled -- 布爾禁用狀態

set_single(selected, by_label=None)?

已棄用:設置此控件中單個項的選擇。

如果控件不只包含一個項,則引發ItemCounterRor。

BY標簽參數被忽略,并且只包括向后兼容性。

set_value_by_label(value)?

按項目標簽設置控件的值。

值應為應選擇的項標簽的子字符串的字符串的iterable。在執行子字符串匹配之前,原始標簽文本將被空格壓縮(連續空格字符轉換為單個空格字符),并去除前導和尾隨空格。不明確的標簽:只要所有不明確的標簽共享相同的項目名稱(例如選項值),它就不會抱怨。

toggle(name, by_label=False, nr=None)?

已棄用:給定名稱或標簽和可選的消除歧義索引nr,切換匹配項的選擇。

選擇項遵循“get”方法的docstring中描述的行為。

如果該項被禁用,或者該控件被禁用或為只讀,則引發attributeError。

toggle_single(by_label=None)?

已棄用:切換此控件中單個項的選擇。

如果控件不只包含一個項,則引發ItemCounterRor。

BY標簽參數被忽略,并且只包括向后兼容性。

class mechanize.CheckboxControl(type, name, attrs, select_default=False, index=None)[源代碼]?

基類:mechanize._form_controls.ListControl

蓋子:

輸入/復選框

fixup()?

ListControls是在解析期間從組件列表項(也是ListControls)構建的。應在添加所有項之后調用此方法。參見 mechanize.ListControl 因為這是必需的。

get(name=None, label=None, id=None, nr=None, exclude_disabled=False)?

按名稱或標簽返回項目,必要時用編號消除歧義。

所有參數都必須按名稱傳遞,但“name”除外,它可以用作位置參數。

如果指定了名稱,則該項必須具有指示的名稱。

如果指定了標簽,則項目必須具有一個標簽,其空白壓縮、剝離、文本子字符串與指示的標簽字符串匹配(例如label=“please choose”will match“do please choose an item”)。

如果指定了ID,則該項必須具有指示的ID。

nr是與查詢匹配的項的從0開始的可選索引。

如果nr是默認的無值,并且找到的項多于項,則會引發歧義錯誤。

如果找不到項,或者如果找到項但指定了nr但找不到,則引發itemNotFoundError。

可選排除禁用項。

get_item_attrs(name, by_label=False, nr=None)?

返回單個ListControl項的HTML屬性字典。

描述列表項的HTML元素類型為:選項用于選擇控件,輸入用于其余項。這些元素具有HTML屬性,您可能偶爾想知道這些屬性——例如,“alt”HTML屬性提供了描述該項的文本字符串(圖形瀏覽器通常將其顯示為工具提示)。

返回的字典將HTML屬性名稱映射為值。名稱和值取自原始HTML。

get_item_disabled(name, by_label=False, nr=None)?

獲取ListControl中已命名列表項的禁用狀態。

get_items(name=None, label=None, id=None, exclude_disabled=False)?

按名稱或標簽返回匹配項。

有關參數文檔,請參見.get()的docstring

get_labels()[源代碼]?

返回此控件的所有標簽(標簽實例)。

如果控件被一個<label>標記包圍,則該標記將是第一個標簽;所有由'for'和'id'連接的其他標簽都將按HTML中顯示的順序排列。

get_value_by_label()?

返回由規范化標簽指定的控件值。

pairs()?

返回適合傳遞到URLENCODE的(鍵、值)對的列表。

possible_items(by_label=False)?

已棄用:返回所有可能項的名稱或標簽。

包括禁用項,這可能會誤導某些用例。

set(selected, name, by_label=False, nr=None)?

已棄用:給定名稱或標簽以及可選的消歧索引nr,將匹配項的選擇設置為所選的bool值。

選擇項遵循“get”方法的docstring中描述的行為。

如果該項被禁用,或者該控件被禁用或為只讀,則引發attributeError。

set_all_items_disabled(disabled)?

設置ListControl中所有列表項的禁用狀態。

參數

disabled -- 布爾禁用狀態

set_item_disabled(disabled, name, by_label=False, nr=None)?

在ListControl中設置已命名列表項的禁用狀態。

參數

disabled -- 布爾禁用狀態

set_single(selected, by_label=None)?

已棄用:設置此控件中單個項的選擇。

如果控件不只包含一個項,則引發ItemCounterRor。

BY標簽參數被忽略,并且只包括向后兼容性。

set_value_by_label(value)?

按項目標簽設置控件的值。

值應為應選擇的項標簽的子字符串的字符串的iterable。在執行子字符串匹配之前,原始標簽文本將被空格壓縮(連續空格字符轉換為單個空格字符),并去除前導和尾隨空格。不明確的標簽:只要所有不明確的標簽共享相同的項目名稱(例如選項值),它就不會抱怨。

toggle(name, by_label=False, nr=None)?

已棄用:給定名稱或標簽和可選的消除歧義索引nr,切換匹配項的選擇。

選擇項遵循“get”方法的docstring中描述的行為。

如果該項被禁用,或者該控件被禁用或為只讀,則引發attributeError。

toggle_single(by_label=None)?

已棄用:切換此控件中單個項的選擇。

如果控件不只包含一個項,則引發ItemCounterRor。

BY標簽參數被忽略,并且只包括向后兼容性。

class mechanize.SelectControl(type, name, attrs, select_default=False, index=None)[源代碼]?

基類:mechanize._form_controls.ListControl

蓋子:

選擇(和選項)

選項“values”(用HTML術語)是mechanize術語中的項“name”。

選擇控件值和標簽受一些混亂的默認規則的約束。例如,如果控件的HTML表示形式為::

<SELECT name=year>
    <OPTION value=0 label="2002">current year</OPTION>
    <OPTION value=1>2001</OPTION>
    <OPTION>2000</OPTION>
</SELECT>

按順序,這些項目有標簽“2002”、“2001”和“2000”,而它們的名稱(選項值)分別為“0”、“1”和“2000”。注意,本例中最后一個選項的值默認為其內容,如RFC1866所指定,第二個和第三個選項的標簽也是如此。

選項標簽有時比選項值更有意義,這可以使代碼更易于維護。

附加只讀公共屬性:attrs

attrs屬性是select元素原始HTML屬性的字典。其他ListControls不具有此屬性,因為在其他情況下,控件作為一個整體不對應于任何單個HTML元素。control.get(…)。

另一個特殊情況是item.attrs字典有一個特殊的鍵“contents”,它不對應于任何真正的html屬性,而是包含選項元素的內容:

<OPTION>this bit</OPTION>
fixup()[源代碼]?

ListControls是在解析期間從組件列表項(也是ListControls)構建的。應在添加所有項之后調用此方法。參見 mechanize.ListControl 因為這是必需的。

get(name=None, label=None, id=None, nr=None, exclude_disabled=False)?

按名稱或標簽返回項目,必要時用編號消除歧義。

所有參數都必須按名稱傳遞,但“name”除外,它可以用作位置參數。

如果指定了名稱,則該項必須具有指示的名稱。

如果指定了標簽,則項目必須具有一個標簽,其空白壓縮、剝離、文本子字符串與指示的標簽字符串匹配(例如label=“please choose”will match“do please choose an item”)。

如果指定了ID,則該項必須具有指示的ID。

nr是與查詢匹配的項的從0開始的可選索引。

如果nr是默認的無值,并且找到的項多于項,則會引發歧義錯誤。

如果找不到項,或者如果找到項但指定了nr但找不到,則引發itemNotFoundError。

可選排除禁用項。

get_item_attrs(name, by_label=False, nr=None)?

返回單個ListControl項的HTML屬性字典。

描述列表項的HTML元素類型為:選項用于選擇控件,輸入用于其余項。這些元素具有HTML屬性,您可能偶爾想知道這些屬性——例如,“alt”HTML屬性提供了描述該項的文本字符串(圖形瀏覽器通常將其顯示為工具提示)。

返回的字典將HTML屬性名稱映射為值。名稱和值取自原始HTML。

get_item_disabled(name, by_label=False, nr=None)?

獲取ListControl中已命名列表項的禁用狀態。

get_items(name=None, label=None, id=None, exclude_disabled=False)?

按名稱或標簽返回匹配項。

有關參數文檔,請參見.get()的docstring

get_labels()?

返回此控件的所有標簽(標簽實例)。

如果控件被一個<label>標記包圍,則該標記將是第一個標簽;所有由'for'和'id'連接的其他標簽都將按HTML中顯示的順序排列。

get_value_by_label()?

返回由規范化標簽指定的控件值。

pairs()?

返回適合傳遞到URLENCODE的(鍵、值)對的列表。

possible_items(by_label=False)?

已棄用:返回所有可能項的名稱或標簽。

包括禁用項,這可能會誤導某些用例。

set(selected, name, by_label=False, nr=None)?

已棄用:給定名稱或標簽以及可選的消歧索引nr,將匹配項的選擇設置為所選的bool值。

選擇項遵循“get”方法的docstring中描述的行為。

如果該項被禁用,或者該控件被禁用或為只讀,則引發attributeError。

set_all_items_disabled(disabled)?

設置ListControl中所有列表項的禁用狀態。

參數

disabled -- 布爾禁用狀態

set_item_disabled(disabled, name, by_label=False, nr=None)?

在ListControl中設置已命名列表項的禁用狀態。

參數

disabled -- 布爾禁用狀態

set_single(selected, by_label=None)?

已棄用:設置此控件中單個項的選擇。

如果控件不只包含一個項,則引發ItemCounterRor。

BY標簽參數被忽略,并且只包括向后兼容性。

set_value_by_label(value)?

按項目標簽設置控件的值。

值應為應選擇的項標簽的子字符串的字符串的iterable。在執行子字符串匹配之前,原始標簽文本將被空格壓縮(連續空格字符轉換為單個空格字符),并去除前導和尾隨空格。不明確的標簽:只要所有不明確的標簽共享相同的項目名稱(例如選項值),它就不會抱怨。

toggle(name, by_label=False, nr=None)?

已棄用:給定名稱或標簽和可選的消除歧義索引nr,切換匹配項的選擇。

選擇項遵循“get”方法的docstring中描述的行為。

如果該項被禁用,或者該控件被禁用或為只讀,則引發attributeError。

toggle_single(by_label=None)?

已棄用:切換此控件中單個項的選擇。

如果控件不只包含一個項,則引發ItemCounterRor。

BY標簽參數被忽略,并且只包括向后兼容性。

class mechanize.SubmitControl(type, name, attrs, index=None)[源代碼]?

蓋子:

輸入/提交按鈕/提交

成員

繼承的成員

顯示繼承

class mechanize.ImageControl(type, name, attrs, index=None)[源代碼]?

基類:mechanize._form_controls.SubmitControl

蓋子:

輸入/圖像

坐標是使用htmlform之一指定的。單擊*方法。

get_labels()?

返回此控件的所有標簽(標簽實例)。

如果控件被一個<label>標記包圍,則該標記將是第一個標簽;所有由'for'和'id'連接的其他標簽都將按HTML中顯示的順序排列。

pairs()?

返回適合傳遞到URLENCODE的(鍵、值)對的列表。