2016-04-15 24 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')