2016-04-15 25 views
1

我的代碼。我想匹配我的標題和我的字幕作爲2個不同的對象:BeautifulSoup得到H2文字不類

print title 
>> My title 
print subtitle 
>> My subtitle 

任何幫助嗎?

+0

添加了不使用'class'的答案。也許有幫助。 – trans1st0r

回答

0

一種不使用class屬性的方法是:

h2 = soup.find('div', id="title").h2 
subtitle = h2.span.text 
title = str(h2.contents[0]) 

h2.contents[0]將在這裏返回一個NavigableString對象。它的打印行爲與字符串版本相同。如果您只打算使用打印語句,則不需要撥打str()

1

你可以得到字幕和它的preceding sibling分開:

title = soup.find('div', id="title").h2 
subtitle = title.find(class_="subtitle") 
print(subtitle.previous_sibling.strip(), subtitle.get_text()) 

或者,你可以找到文本節點在非遞歸模式:

title = soup.find('div', id="title").h2 
print(title.find(text=True, recursive=False).strip(), 
     title.find(class_="subtitle").get_text(strip=True)) 

兩個打印:

(u'My title', u'My Subtitle')