BeautifulSoup не распознает значение из атрибута имени в теге select - PullRequest
1 голос
/ 01 мая 2020

Я пытаюсь получить некоторые варианты раскрывающихся списков с веб-сайта, но не могу заставить BeautifulSoup прочитать значение из атрибута имени в теге select.

Мои списки имеют следующие теги:

Первый список:

<select id="2" name="ComboEstado" onchange="Executar(this)" style="color:#003366; background:#cccccc; font-size:10px">

Второй список:

<select id="2" name="ComboMunicipio" onchange="ExecMunicipio()" style="color:#003366; background:#cccccc; font-size:10px">

Мой код пытается извлечь текст и значение из первого списка:

estados = soup.find(name="ComboEstado", id="2").find_all("option")
for estado in estados:
    print(estado.text, estado['value'])

(это работает только если я использую onlye soup.find (id = "2"), но так как оба списка имеют этот атрибут, я не думаю, что это хороший идентификатор)

Полученное сообщение :

---------------------------------------- ----------------------------------- AttributeError Traceback (последний вызов был последним) в ----> 1 estados = soup.find (name = "ComboEstado", id = "2"). find_all ("option") 2 для Estado в Estados: 3 # номер по порядку для печати 4 print (estado.text, estado ['value') ])

AttributeError: объект 'NoneType' не имеет атрибута 'find_all'

Также уже пытался использовать это:

soup.find("name"="ComboEstado", id="2")
* 1 026 * И получил это:

Файл "", строка 1 estados = soup.find ("name" = "ComboEstado", id = "2"). Find_all ("option") ^ SyntaxError : ключевое слово не может быть выражением

Также пробовал:

soup.find("ComboEstado", id="2")

soup.find("ComboEstado")

Оба с одной и той же первой ошибкой.

Есть идеи, что мне здесь не хватает? Заранее спасибо.

1 Ответ

0 голосов
/ 01 мая 2020

Попробуйте определить списки следующим образом:

list1=soup.find("select",{"name":"ComboEstado"})
list2=soup.find("select",{"name":"ComboMunicipio"})
...