如何在下拉列表中设置选项是使用python中的beauttifulsoup“选中”的?

如何在下拉列表中设置选项是使用python中的beauttifulsoup“选中”的?,python,beautifulsoup,Python,Beautifulsoup,我想以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"

我想以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”,当以html形式在相应的输入字段中显示文本文件内容时,该选项的id为“Stroke_Version”。这是如何在python中使用beautifulsoup实现的

例如:

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

我想不出什么好办法。这里有一个例子供你参考

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>
...

我想不出什么好办法。这里有一个例子供你参考

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>
...
可以在所需的选项标记中添加选定属性

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)
可以在所需的选项标记中添加选定属性

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)
可能有帮助这个可能有帮助