Beautifulsoup split text in tag by

后端 未结 1 769
星月不相逢
星月不相逢 2021-01-18 03:02

Is it possible to split a text from a tag by br tags?

I have this tag contents: [u\'+420 777 593 531\',
, u\'+420 776 593 531\',
, u\'+42

1条回答
  •  余生分开走
    2021-01-18 03:29

    You need to test for tags, which are modelled as Element instances. Element objects have a name attribute, while text elements don't (which are NavigableText instances):

    [x for x in dt.find_next_sibling('dd').contents if getattr(x, 'name', None) != 'br']
    

    Since you appear to only have text and
    elements in that

    element, you may as well just get all the contained strings instead:

    list(dt.find_next_sibling('dd').stripped_strings)
    

    Demo:

    >>> from bs4 import BeautifulSoup
    >>> soup = BeautifulSoup('''\
    ... 
    Term
    ...
    ... +420 777 593 531
    ... +420 776 593 531
    ... +420 775 593 531
    ...
    ... ''') >>> dt = soup.dt >>> [x for x in dt.find_next_sibling('dd').contents if getattr(x, 'name', None) != 'br'] [u'\n +420 777 593 531', u'\n +420 776 593 531', u'\n +420 775 593 531', u'\n'] >>> list(dt.find_next_sibling('dd').stripped_strings) [u'+420 777 593 531', u'+420 776 593 531', u'+420 775 593 531']

    0 讨论(0)
提交回复
热议问题