Как установить параметр в раскрывающемся списке «выбрано» с помощью beauttifulsoup в python? - PullRequest
1 голос
/ 07 февраля 2020

Я хочу показать содержимое текстового файла в форме html. В моей форме есть два раскрывающихся списка, как показано ниже.

<select  id="Stroke_Version" onchange="" class="input_style cylconst" name="stroke_ver">
 <option value="2S" >2S</option>
 <option value="4S" >4S</option>
</select>
<select id="engine_builder" class="input_style" name="engine_build">
 <option value="">------------Select------------</option>
 <option value="ACECNV">ACECNV (ACEC N.V)</option>
 <option value="ADRIAD">ADRIAD (Adria Diesel D.D.)</option>
</select>

Я хотел бы установить второй параметр в первом раскрывающемся списке: 'selected' (с идентификатором 'Stroke_Version') при отображении содержимого текстового файла в соответствующих полях ввода в форме html. Как это возможно с помощью Beautifulsoup в python.

например:

<select  id="Stroke_Version" onchange="" class="input_style cylconst" name="stroke_ver">
 <option value="2S" >2S</option>
 <option value="4S" selected>4S</option>
</select>

Ответы [ 2 ]

0 голосов
/ 07 февраля 2020

Вы можете добавить атрибут selected в тег опции, который вы хотите.

from bs4 import BeautifulSoup
# from your soup get option tag in which you want to add  selected using xpath or id
soup = BeautifulSoup('<option value="4S" >4S</option>')
tag = soup.option

tag["selected"] = None

print(tag)
0 голосов
/ 07 февраля 2020

Я не могу придумать ни одного хорошего способа. Вот пример для справки.

from simplified_scrapy.simplified_doc import SimplifiedDoc
html = '''
<select  id="Stroke_Version" onchange="" class="input_style cylconst" name="stroke_ver">
 <option value="2S" >2S</option>
 <option value="4S" >4S</option>
</select>
<select id="engine_builder" class="input_style" name="engine_build">
 <option value="">------------Select------------</option>
 <option value="ACECNV">ACECNV (ACEC N.V)</option>
 <option value="ADRIAD">ADRIAD (Adria Diesel D.D.)</option>
</select>
'''
doc = SimplifiedDoc(html)
option = doc.select('select#Stroke_Version').select('option@value=4S') # Get the option
index = option.outerHtml.find('>') # Get insertion location
html = doc.html[0:option._start+index]+' selected'+doc.html[option._start+index:] # Concatenate string
print (html)

Результат:

<select id="Stroke_Version" onchange="" class="input_style cylconst" name="stroke_ver">
 <option value="2S">2S</option>
 <option value="4S" selected>4S</option>
</select>
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...