2016-11-16 17 views
0

私はdjangoにappを持っており、特定の方法でテキストを表示する必要があります。pタグ内のすべてのbタグをBeautifulSoupで表示

これは私のhtmlコードです:、

**Name of person** City, Country 
**Name of person** 

しかし、私はBのみを取得することができます:

<p class="name"> 
<b>Name of person</b> City, Country</p> 
<p class="name"> 
<b>Name of person</b></p> 

私は例えば、通常のテキストでは、人と市と国の名前を太字取得したいですどのようにしてpとpをpの中に入れることができますか?

BeautifulSoapでの私のコードは:タグのない

people = self.concattexts.filter(code='Active') 
for p in people: 
    soup = BeautifulSoup(p.text_html, 'html.parser') 
    all_people = [b.get_text(separator=' - ', strip=True) for b in soup.find_all('b')] 
    return all_people 

答えて

0

テキストNavigableStringです:

>>> soup = BeautifulSoup('<p class="name"><b>Name of person</b> City, Country</p>', 
...      'html.parser') 
>>> children = list(soup.p.children) 
>>> children 
[<b>Name of person</b>, u' City, Country'] 
>>> type(children[-1]) 
<class 'bs4.element.NavigableString'> 
>>> isinstance(children[-1], basestring) 
True 

私はpの子供を取得し、彼らは右の構造(<b>を持っていることを確認することをお勧めタグの後ろに文字列)を入力し、必要に応じて情報を抽出します。アウト

0
from bs4 import BeautifulSoup 
doc = ''' 
<p class="name"> 
<b>Name of person</b> City, Country</p> 
<p class="name"> 
<b>Name of person</b></p> 
''' 
soup = BeautifulSoup(doc,'lxml') 

for i in soup.find_all('p', class_='name'): 
    print(i.get_text(separator=' - ', strip=True)) 

Name of person - City, Country 
Name of person 

get_text()タグの下にあるすべてのテキストを取得することができ、b tagを使用する必要はありません、ただp tagは罰金

に動作します
関連する問題