2016-10-14 11 views
3

私は問題があります。私の目的は、ある時点までデータを解析することです。それから、私は解析をやめたい。Beautilful Soupのある時点でhtmlを削除します

 <span itemprop="address"> 
     Some address 
     </span> 
     <i class="fa fa-signal"> 
     </i> 
     ... 
     </p> 
     </div> 
    </div> 
    <div class="search_pagination" id="pagination"> 
     <ul class="pagination"> 
     </ul> 
    </div> 
    </div> 
    </div> 
    </div> 
    <div class="col-sm-3"> 
    <div class="panel" itemscope="" itemtype="http://schema.org/WPSideBar"> 
    <h2 class="heading_a" itemprop="name"> 
    Top-10 today 
    </h2> #a lot of tags after that moment 

私は一瞬Top-10 todayまで(それらの多くは、前にある)<span itemprop="address">からすべての値を取得したいです。

答えて

0

あなたが実際にBeautifulSoupparse only the tags you are interested in via SoupStrainerをさせることができます。

from bs4 import BeautifulSoup, SoupStrainer 

only_addresses = SoupStrainer("span", itemprop="address") 
soup = BeautifulSoup(html_doc, "html.parser", parse_only=only_addresses) 

あなたがが、「今日のトップ10」の前にいくつかの「アドレス」を持っているし、いくつかの後にいますが、その前にお越しの方に興味があるなら、あなたが作ることができますカスタムsearching function

def search_addresses(tag): 
    return tag.name == "span" and tag.get("itemprop") == "address" and \ 
      tag.find_next("h2", text=lambda text: text and "Top-10 today" in text) 

addresses = soup.find_all(search_addresses) 

それは些細な見えませんが、考え方は単純です - 私たちは、「トップ10今日」の見出しがそれの後に存在するかどうかを確認するために、すべての「アドレス」のためfind_next()を使用しています。

関連する問題