0

これはしばらくの間私を困惑させてきました、そして私はここで何が起こっているのか理解できません。これは元のXMLファイルです。

<?xml version="1.0" encoding="UTF-8" ?>
<book>
  <meta>
    <title>Some Title</title>
    <creator>Another Author</creator>
    <language>en-US</language>
    ...
  </meta>
  <chapter>
    ...
  </chapter>
</book>

次に、次のファイルを読み取ります。

with open(filename) as f :
    soup = BeautifulSoup(f);
    print(soup.root)

そして、奇妙なことに、それは以下をダンプします:

<html><body><book>
<meta/>
<title>Some Title</title>
<creator>Some Author</creator>
<language>en-US</language>
...

では、元のXMLファイルにないのに、なぜ<meta>スープのタグが空なのですか?(これがちょうど2週間前に機能したことを誓うことができ、スクリプトに触れていないことも誓うことができました。XMLファイルをさらに下に少し変更しましたが、相関関係はわかりません。)

4

1 に答える 1

0

HTML パーサーで XML ファイルを開いています。BeautifulSoup は、予期した HTML 構造を修復しようとします。

代わりに、XML パーサーを使用するか、XML モードで BeautifulSoup を使用します。

soup = BeautifulSoup(f, 'xml')

これが機能するには、インストールしておく必要がありますlxml

lxmlそれ自体が優れた XML ライブラリです。Python に含まれているElementTreeライブラリを使用することもできます。lxml同じ API に基づいていますが、より多くの機能があります。

于 2013-03-16T21:47:48.447 に答える