Python Mechanize выберите форму без имени

Я пытаюсь механизировать выбор формы на странице, но рассматриваемая форма не имеет атрибута name в html. Что я должен делать? когда я пытаюсь использовать

br.select_form(name = "")

Я получаю сообщение об ошибке, заключающееся в том, что форма с таким именем не объявлена, а функция требует ввода имени. На странице есть только одна форма. Есть ли другой способ выбрать эту форму?


person Mantas Vidutis    schedule 06.04.2010    source источник


Ответы (2)


Пытаться:

br.select_form(nr=0)

выбрать первую форму

В исходном коде Mechanize,

def select_form(self, name=None, predicate=None, <b>nr=None</b>):
    """
    ...
    nr, if supplied, is the sequence number of the form (where 0 is the
    first).
    """
person YOU    schedule 06.04.2010
comment
Спасибо. В моем случае это сработало только с одной формой. Просто из любопытства, как, по вашему мнению, это можно сделать со многими формами? Либо все безымянные, либо одни поименованные, а другие безымянные? - person Mantas Vidutis; 06.04.2010
comment
@mvid, да, у документа может быть много форм, имена тоже необязательны, и с этим не должно быть проблем с Mechanize. - person YOU; 06.04.2010
comment
где мы можем получить значение предиката из формы? - person Yuda Prawira; 03.11.2010
comment
@Gunslinger_: предикат - это функция, которая принимает форму и возвращает True или False независимо от того, выбирать ее или нет - person Claudiu; 21.09.2012

Если вы хотите выполнить код для нескольких форм, независимо от их имени, вы можете перебирать каждую форму, позволяя вашему скрипту знать, какая форма будет работать следующей.

currentForm = 0
for form in br.forms(): # Iterate over the forms
        br.select_form(nr = currentForm) # Select the form
        '''
        The code you want to run for every form
        '''
        currentForm += 1 # Add 1 to the current working form so the script knows what form is working next
person Stam Kaly    schedule 02.10.2016