0

バグに違いないと思ったので、ここでバグレポートを発行しました。一方、何かが欠けている可能性があるため、コードをもう一度確認する必要があります。

問題は、.xhtml ファイルの内容で BeautifulSoup を初期化すると、xml 定義の末尾に 2 つの疑問符が表示されることです。

問題を再現できますか?それを回避する方法はありますか?関数、メソッド、引数などが不足していますか?

Edit0: Python 2.x の BeautifulSoup 4 です。

Edit1:なぜ反対票を投じるのですか?


問題:

<?xml version="1.0" encoding="UTF-8"??>

端末出力:

>>> from bs4 import BeautifulSoup as bs
>>> with open('example.xhtml', 'r') as f:
...     txt = f.read()
...     soup = bs(txt)
... 
>>> print txt
<?xml version="1.0" encoding="UTF-8"?>
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta charset="utf-8"/>
    </head>
    <body>
    </body>
</html>

>>> print soup
<?xml version="1.0" encoding="UTF-8"??>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8"/>
</head>
<body>
</body>
</html>
4

3 に答える 3

2

これはバグです。Beautiful Soup の次のリリースに含まれる修正をコミットしました。

根本的な原因:

HTMLParser クラスは、SGML 構文規則を使用して命令を処理します。末尾の「?」を使用した XHTML 処理命令 '?' が発生します。データに含まれます。

一般に、ThiefMaster が提案したように、「xml」パーサーを使用して XHTML を解析すると、より良い結果が得られます。

于 2012-04-18T12:49:48.737 に答える
1

XMLパーサーの使用を検討してください。

soup = bs(txt, 'xml')
于 2012-04-18T06:42:03.917 に答える
0

example.xhtmlファイルの「txt」の変数の内容を使用すると、Python2.7および対応するBeautifulSoupモジュール(bs4ではない)の問題を再現できません。私にとってはうまく機能し、ダンディです。

>>> soup = BeautifulSoup.BeautifulSoup(txt)
>>> print soup
<?xml version='1.0' encoding='utf-8'?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
</head>
<body>
</body>
</html>

あなたが直面している問題は何ですか、あなたの最終目的は何ですか、多分それならsomooneは回避策を提案することができます

于 2012-04-18T06:33:45.140 に答える