Python 如何使用Beauty Soup将HTML5音频标记添加到HTML文档中

Python 如何使用Beauty Soup将HTML5音频标记添加到HTML文档中,python,html,beautifulsoup,html5-audio,bs4,Python,Html,Beautifulsoup,Html5 Audio,Bs4,我正在编写一个脚本,使用Beauty Soup 4将旧的flash音频/视频元素替换为新的HTML 5音频/视频元素,但是我很难创建以下格式的音频标记: <audio controls> <source src="../../files/audios/333/MP3File.mp3" type="audio/mpeg"> </audio> 我试着在Python解释器中处理这个问题,但没有成功 >>> soup = Beautiful

我正在编写一个脚本,使用Beauty Soup 4将旧的flash音频/视频元素替换为新的HTML 5音频/视频元素,但是我很难创建以下格式的音频标记:

<audio controls>
  <source src="../../files/audios/333/MP3File.mp3" type="audio/mpeg">
</audio>

我试着在Python解释器中处理这个问题,但没有成功

>>> soup = BeautifulSoup("<html></html>")
>>> nextsoup = soup.new_tag("<audio controls></audio>")


>>> nextsoup
<<audio controls></audio>></<audio controls></audio>>
>>> nextsoup = soup.new_tag("audio")
>>> nextsoup
<audio></audio>

>>> nextsoup = soup.new_tag("audio")
>>> nextsoup = soup.new_tag("audio", "controls")
>>> nextsoup
<audio></audio>
>>> nextsoup["controls"]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  line 958, in __getitem__
    return self.attrs[key]
KeyError: 'controls'
>>> nextsoup["controls"] = ""
>>> nextsoup

<audio controls=""></audio>
>soup=beautifulsou(“”)
>>>nextsoup=soup.new_标记(“”)
>>>下一组
>>>nextsoup=soup.new_标签(“音频”)
>>>下一组
>>>nextsoup=soup.new_标签(“音频”)
>>>nextsoup=soup.new_标签(“音频”、“控件”)
>>>下一组
>>>下一组[“控制”]
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
第958行,在uu getitem中__
返回self.attrs[键]
KeyError:“控件”
>>>下一组[“控件”]=“”
>>>下一组
那么,有没有办法在音频中添加“控件”,或者我应该使用其他库?还有一种方法可以指定一个没有结束标记的标记,比如源标记


我还尝试将元素添加为navigablestring,并将它们附加到应该的位置,但我在编码方面遇到了问题,因此我尝试指定编码格式-utf-8,然后指定soup.prettify(formatter=None)但是脚本不断因ascii错误而崩溃…

传递
控件
关键字参数并将值设置为

>>> audio = soup.new_tag("audio", controls=None)
>>> audio.append(soup.new_tag("source", src="path", type="audio/mpeg"))
>>> soup.append(audio)
>>> print(audio.prettify())
<audio controls>
 <source src="path" type="audio/mpeg">
 </source>
</audio>
>>音频=汤。新标签(“音频”,控件=无)
>>>audio.append(soup.new_标记(“source”,src=“path”,type=“audio/mpeg”))
>>>soup.append(音频)
>>>打印(audio.prettify())