首页 文章

beautifulsoup提取没有标签的文本

提问于
浏览
1

我有如下的HTML解析文本,并尝试以相同的顺序提取文本 .

<b>
 <i>
  Data
 </i>
 Data Summary
</b>

Data Description

<pre>Data paragraph which contains huge string
</pre>

<pre></pre>

<b> <i> Data 2 </i> Data 2 Summary </b>
Data 2 Description

<pre>Data 2 paragraph which contains huge string
</pre>

能够使用 soup.findAll(['b', 'i']) 在标签 ib 之间提取,但是在每个 b 标签之后我都在努力获取没有标签的文本 . 我试过 next_sibling ,它甚至不能用于此 . 任何帮助,将不胜感激 .

预期的结果是:

Data Summary : Data Description : Data paragraph which contains huge string newline Data 2 : Data 2 Summary : Data 2 Description : Data 2 paragraph which contains huge string

1 回答

  • 1

    您可以迭代所有包含文本的元素,如下所示:

    from bs4 import BeautifulSoup
    
    html = """
    <b><i>Data</i>Data Summary</b>
    Data Description

    <pre>Data paragraph which contains huge string
    </pre>

    <pre></pre>

    <b><i>Data 2</i>Data 2 Summary</b>
    Data 2 Description

    <pre>Data 2 paragraph which contains huge string
    </pre>

    """ soup = BeautifulSoup(html, "html.parser") text_items = [t.strip() for t in soup.find_all(text=True) if len(t.strip())] print(text_items)

    这也会剥离任何空格,只存储导致非空字符串的项目 . 它将显示以下列表:

    ['Data', 'Data Summary', 'Data Description', 'Data paragraph which contains huge string', 'Data 2', 'Data 2 Summary', 'Data 2 Description', 'Data 2 paragraph which contains huge string']
    

相关问题