python - 如何使用 Beautiful Soup 将 HTML 5 音频标签添加到 HTML 文档

标签 python html html5-audio beautifulsoup

我正在编写一个脚本,使用 Beautiful Soup 4 将旧的 Flash 音频/视频元素替换为新的 HTML 5 音频/视频元素,但是我在创建以下格式的音频标签时遇到了困难:

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

我尝试在 Python Interpreter 中使用它,但一无所获。

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

那么有没有办法向音频添加“控件”,或者我应该使用其他库吗?还有一种方法可以指定没有结束标记的标记,例如带有源标记的标记吗?

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

最佳答案

传递 controls 关键字参数并将值设置为 None:

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

关于python - 如何使用 Beautiful Soup 将 HTML 5 音频标签添加到 HTML 文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35949868/

相关文章:

python - 如何知道图像数据是来自pygame的ABGR还是RGBA?

python ,被杀了?

python - 如何将数组绘制为热图时间序列

javascript - 如何切换单选按钮

javascript - 无法在 Chrome 扩展的内容脚本中将 <img> 附加到 <span>

python - 模型的输出张量必须是 Keras 张量

caching - HTML5会支持离线缓存音频的访问吗?

html - 仅限 Chrome 加载 6 个 HTML5 音频标签

javascript - 如何为 new Audio() 使用 flash 后端?

javascript - 移动设备上的音频事件监听器不起作用