Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

get text after specific tag with beautiful soup

I have a text like

page.content = "<body><b>Title:</b> Test title</body>"

I can get the Title tag with

soup = BeautifulSoup(page.content)
record_el = soup('body')[0]
b_el = record_el.find('b',text='Title:')

but how can I get the text after the b tag? I would like to get the text after the element containing "Title:" by referring to that element, and not the body element.

like image 799
carl Avatar asked Aug 03 '16 22:08

carl


1 Answers

Referring to the docs you might want to use the next_sibling of your b_el:

b_el.next_sibling    # contains " Test title"

"Sibling" in this context is the next node, not the next element/tag. Your element's next node is a text node, so you get the text you want.

like image 136
Hubert Grzeskowiak Avatar answered Oct 14 '22 00:10

Hubert Grzeskowiak