Usando BeautifulSoup Extraer texto sin tags

Mi página web es algo así:

YOB: 1987
RACE: WHITE
GENDER: FEMALE
HEIGHT: 5'05''
WEIGHT: 118
EYE COLOR: GREEN
HAIR COLOR: BROWN

Quiero extraer la información de cada individuo y obtener el YOB:1987 , RACE:WHITE etc.

Lo que intenté es …

 subc = soup.findAll('p') subc1 = subc[1] subc2 = subc1.findAll('strong') 

Pero esto me da solo los valores de YOB: RACE: etc.

¿Hay alguna forma de obtener los datos en formato YOB:1987 , RACE:WHITE ?

Simplemente next_sibling todas las tags y use next_sibling para obtener lo que desea. Me gusta esto:

 for strong_tag in soup.find_all('strong'): print strong_tag.text, strong_tag.next_sibling 

Manifestación:

 >>> from bs4 import BeautifulSoup >>> html = ''' ... 

... YOB: 1987
... RACE: WHITE
... GENDER: FEMALE
... HEIGHT: 5'05''
... WEIGHT: 118
... EYE COLOR: GREEN
... HAIR COLOR: BROWN
...

... ''' >>> soup = BeautifulSoup(html) >>> for strong_tag in soup.find_all('strong'): ... print strong_tag.text, strong_tag.next_sibling

Esto te da:

 YOB: 1987 RACE: WHITE GENDER: FEMALE HEIGHT: 5'05'' WEIGHT: 118 EYE COLOR: GREEN HAIR COLOR: BROWN 

Creo que puedes conseguirlo usando subc1.text .

 >>> html = """ 

YOB: 1987
RACE: WHITE
GENDER: FEMALE
HEIGHT: 5'05''
WEIGHT: 118
EYE COLOR: GREEN
HAIR COLOR: BROWN

""" >>> from bs4 import BeautifulSoup >>> soup = BeautifulSoup(html) >>> print soup.text YOB: 1987 RACE: WHITE GENDER: FEMALE HEIGHT: 5'05'' WEIGHT: 118 EYE COLOR: GREEN HAIR COLOR: BROWN

O si quieres explorarlo , puedes usar .contents :

 >>> p = soup.find('p') >>> from pprint import pprint >>> pprint(p.contents) [u'\n', YOB:, u' 1987', 
, u'\n', RACE:, u' WHITE',
, u'\n', GENDER:, u' FEMALE',
, u'\n', HEIGHT:, u" 5'05''",
, u'\n', WEIGHT:, u' 118',
, u'\n', EYE COLOR:, u' GREEN',
, u'\n', HAIR COLOR:, u' BROWN',
, u'\n']

y filtrar los elementos necesarios de la lista:

 >>> data = dict(zip([x.text for x in p.contents[1::4]], [x.strip() for x in p.contents[2::4]])) >>> pprint(data) {u'EYE COLOR:': u'GREEN', u'GENDER:': u'FEMALE', u'HAIR COLOR:': u'BROWN', u'HEIGHT:': u"5'05''", u'RACE:': u'WHITE', u'WEIGHT:': u'118', u'YOB:': u'1987'}