2016-07-31 17 views
1
<hr class="calibre2" /> 
<h3 class="calibre5">-ability</h3> (in nouns 构成名词) : <br class="calibre4" /> 
<blockquote class="calibre6"><p class="calibre_1"><span class="italic">◊ capability 能力 </span></p></blockquote> 

<blockquote class="calibre6"><p class="calibre_1"><span class="italic">◊ responsibility 责任 </span></p></blockquote> 

<hr class="calibre2" /> 
<h3 class="calibre5">-ibility</h3> (in nouns 构成名词) : <br class="calibre4" /> 
<blockquote class="calibre6"><p class="calibre_1"><span class="italic">◊ capability 能力 </span></p></blockquote> 

<blockquote class="calibre6"><p class="calibre_1"><span class="italic">◊ responsibility 责任 </span></p></blockquote> 

<hr class="calibre2" /> 

これは私のスープの一部です。 2つの<hr>は、近いタグではないので、私はいくつかの単純なメソッドを使用することができなかったので、私はfind_next_elementsを使用することができますが、彼は<hr class = 'calibre2'>を参照してください、ありがとうございました。BeautifulSoupを使用して<hr class = 'calibre2'> ... <hr class = "calibre2" />のコンテンツを取得する方法

答えて

1

すべてのhr要素をループし、.find_next_siblings()を使用して次の兄弟要素を反復処理できます。あなたがhrを満たしていればその後、ループを破る:

for hr in soup.find_all("hr", class_="calibre2"): 
    for item in hr.find_next_siblings(): 
     if item.name == "hr": 
      break 

     print(item) 
    print("-----") 
+0

と一緒に時間とcalibre2クラスを確認することができ、私は全面的に朝を使い、問題を解決したい、あなたは私を生き延びた。どうもありがとうございます。 –

+0

@yiwangあなたは[回答を受け入れる]ことができます(http://stackoverflow.com/help/someone-answers)、私は関係なく助けてうれしいです。ありがとう。 – alecxe

+0

こんにちは、hrがクローズタグではないので、


の間で純粋なテキストを取得する方法を知りたいので、tag.txtを直接使用することはできませんでした。 、try whenタグではtag.txtを使用し、文字列である場合を除いて、文字列に追加するだけですが、結果が良くない場合、一部のコンテンツが失われ、まだそこにタグが付いています。私に対処する方法は、タグを閉じていないと私は純粋なテキストの問題を取得したい。ありがとうございました。 –

0

あなたがfind_all_next 私はあなたが私に大きな助けを与える表現するにはどうすればよいhttps://www.crummy.com/software/BeautifulSoup/bs4/doc/#find-all-next-and-find-next

from bs4 import BeautifulSoup 

testStr = """ 
<hr class="calibre2" /> 
<h3 class="calibre5">-ability</h3> (in nouns 构成名词) : <br class="calibre4" /> 
<blockquote class="calibre6"><p class="calibre_1"><span class="italic">◊ capability 能力 </span></p></blockquote> 

<blockquote class="calibre6"><p class="calibre_1"><span class="italic">◊ responsibility 责任 </span></p></blockquote> 

<hr class="calibre2" /> 
<h3 class="calibre5">-ibility</h3> (in nouns 构成名词) : <br class="calibre4" /> 
<blockquote class="calibre6"><p class="calibre_1"><span class="italic">◊ capability 能力 </span></p></blockquote> 

<blockquote class="calibre6"><p class="calibre_1"><span class="italic">◊ responsibility 责任 </span></p></blockquote> 

<hr class="calibre2" /> 
"""; 
soup = BeautifulSoup(testStr, 'lxml') 
hrTag = soup.hr 

nextTags = hrTag.find_all_next() 

content = [] 

for item in nextTags: 
    # check if we have reached the second calibre2 hr 
    print("Name %s ; Class %s" % (item.name, item['class'][0])) 
    if item.name == 'hr' and item['class'][0] == 'calibre2': 
     break 
    content.append(item) 
print(content) 
+0

私に教えていただきありがとうございますが、私の窓ではbeautifulsoup(...、 'lxml')を使うことができませんでした。しかし、xmlをインストールしたいとき、私はpipメソッドを使うことができませんでした。しかし、私はあなたのコードを習得しようとします。 –

+0

こんにちは、trタグがクローズタグではないので、2つのhrタグの間に純粋なテキストを取得する方法があるかどうかを知りたいので、その中に純粋なテキストを直接取得できませんでした。試してみても、純粋なテキストを取得するメソッドを除いて、結果は良くありません。あなたはオープン


の外にクローズタグを追加する方法がありますか、私は直接tag.txtを使用して、私の欲望のものを得ることができます、ありがとうございます。 –

関連する問題