0

以前page.prettify()は HTML を整理していましたが、これが今抽出したいテキストです。

        <div class="item">
         <b>
          name
         </b>
         <br/>
         stuff here
        </div>

私の目標はそこから を抽出することですが、他のものが既に含まれている 以外のstuff hereタグでラップされていないため、困惑しています。divまた、すべての行の前に空白を追加すると、さらに難しくなります。

これを行う方法は何ですか?

4

3 に答える 3

2

投稿した例では、find と nextSibling の組み合わせが機能します。

soup = BeautifulSoup(""" <div class="item"> <b> name </b>  <br/>  stuff here </div>""")
soup.find("div", "item").find('br').nextSibling
于 2012-05-26T17:07:01.977 に答える
1

最後のタグの直前で終わり、特定のタグの後に始まるコンテンツを確実に取得したい場合は、この時点で RegExp を使用できますが、これは最も洗練された方法ではありませんが、要件が具体的である場合は機能する可能性があります。

于 2012-05-26T16:54:59.017 に答える
0

.contents要素のプロパティを使用して、div要素内のすべての要素を直接取得し、文字列である要素を選択することができます。

編集:

これは私がほのめかしていたアプローチでした:

from bs4 import BeautifulSoup
from bs4.element import NavigableString

soup = BeautifulSoup("""<div class='item'> <b> name </b>  <br/>  stuff here </div>""")
div = soup.find('div')
print ''.join([el.strip() for el in div.contents if type(el) == NavigableString])
于 2012-05-26T16:11:45.030 に答える