我怎么能忽略在BeautifulSoup中其他HTMLtag之间编写的HTML标记呢?

2024-09-19 23:48:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用漂亮的汤解析HTML文档。 我正在从文档中提取<p>标记。 然而,在<p>标记之间是像<a href = 'bla'> bla <a>这样的其他标记。 问题是,当我想忽略这些<a>标记时,我的代码也会提取它们

示例:

html = ['<p> text text text. (<a href = bla> bla </a>) </p>']

我的代码:

Reintext = []
for line in html:
    try:
        soup = bs(line, 'lxml')
        re = ','.join(p.text for p in soup.find_all('p', class_=False, id=False))
        j = re.replace('\n', '')
        g = ' '.join(j.split())
        Reintext.append(g)
    except:
        print(line)

输出

Reintext = ['text text text. ( bla ) ,']

那么如何忽略Reintext输出中的(bla)部分呢


Tags: 代码textin文档标记refalsefor
1条回答
网友
1楼 · 发布于 2024-09-19 23:48:09

您可以通过使用find函数并只保留NavigableString对象(在HTML中表示纯文本)来实现这一点

from bs4 import BeautifulSoup as bs
import bs4
html = ['<p> text text text. (<a href = bla> bla </a>) </p>']

for line in html:
    soup = bs(line, 'lxml')
    external_span = soup.find('p')
    text = []
    for x in external_span:
        if isinstance(x, bs4.element.NavigableString):
            text.append(x.strip())
    print(" ".join(text))
#text text text. ( )

相关问题 更多 >