12

この質問はBeautifulSoup4に固有のものであり、前の質問とは異なります。

BeautifulSoupが自己閉鎖要素を変更するのはなぜですか?

BeautifulSoupのselfClosingTags

なくなったので(以前のxmlパーサー)、新しい自己終了タグを尊重するBeautifulStoneSoupにはどうすればよいですか?bs4例えば:

import bs4   
S = '''<foo> <bar a="3"/> </foo>'''
soup = bs4.BeautifulSoup(S, selfClosingTags=['bar'])

print soup.prettify()

タグをセルフクローズしませんbarが、ヒントを提供します。bs4が参照しているこのツリービルダーとは何ですか?タグをセルフクローズする方法は?

/usr/local/lib/python2.7/dist-packages/bs4/__init__.py:112: UserWarning: BS4 does not respect the selfClosingTags argument to the BeautifulSoup constructor. The tree builder is responsible for understanding self-closing tags.
  "BS4 does not respect the selfClosingTags argument to the "
<html>
 <body>
  <foo>
   <bar a="3">
   </bar>
  </foo>
 </body>
</html>
4

1 に答える 1

15

XMLを解析するには、BeautifulSoupコンストラクターの2番目の引数として「xml」を渡します。

soup = bs4.BeautifulSoup(S, 'xml')

lxmlをインストールする必要があります。

もう合格する必要はありselfClosingTagsません:

In [1]: import bs4
In [2]: S = '''<foo> <bar a="3"/> </foo>'''
In [3]: soup = bs4.BeautifulSoup(S, 'xml')
In [4]: print soup.prettify()
<?xml version="1.0" encoding="utf-8"?>
<foo>
 <bar a="3"/>
</foo>
于 2013-02-19T15:51:11.243 に答える