1
BeautifulSoup4 v4.6.0とlxml v3.8.0がインストールされています。私は以下を解析しようとしていますxhtml
。lxml xmlパーサーによるBeautifulSoup4は、xhtmlファイルのインラインsvgからxmlns属性を削除します。
私のコードは解析する:私はスープを検査する際
from bs4 import BeautifulSoup
xhtml_string = """
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
</head>
<body class="sgc-1">
<svg xmlns="http://www.w3.org/2000/svg" height="100%" preserveAspectRatio="xMidYMid meet" version="1.1" viewBox="0 0 600 800" width="100%" xmlns:xlink="http://www.w3.org/1999/xlink">
<image height="800" width="573" xlink:href="../Images/Cover.jpg"></image>
</svg>
</body>
</html>
"""
soup = BeautifulSoup(xhtml_string, 'xml')
はしかし、BeautifulSoupが<image>
タグのhref
属性にxmlns="http://www.w3.org/2000/svg"
と<svg>
タグのxmlns:xlink="http://www.w3.org/1999/xlink"
とxlink
接頭辞を取り除いたことが表示されます。
はすなわちsoup.prettify()
私は選択肢を持っていない
<?xml version="1.0" encoding="unicode-escape"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
</head>
<body class="sgc-1">
<svg height="100%" preserveAspectRatio="xMidYMid meet" version="1.1" viewBox="0 0 600 800" width="100%">
<image height="800" href="../Images/Cover.jpg" width="573"/>
</svg>
</body>
</html>
次のソースxhtml
を変更するには戻って、私が見たものからxmlns
宣言は有効です。 BeautifulSoupをそのままxhtml
のままにする方法はありますか?