Beautifulsoup split text in tag by

后端 未结 1 768
星月不相逢
星月不相逢 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 <br /> elements in that <dd> 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('''\
    ... <dt>Term</dt>
    ... <dd>
    ...     +420 777 593 531<br/>
    ...     +420 776 593 531<br/>
    ...     +420 775 593 531<br/>
    ... </dd>
    ... ''')
    >>> 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)
提交回复
热议问题