首页 > 解决方案 > 为什么在 BeautifulSoup 中添加 head 标签会在 HEAD 之后立即关闭 HTML 标签?

问题描述

我正在尝试编写一个网页转换器,将脚本和其他标签添加到网页的 HEAD,以及标记 BODY 中的内容。我正在使用 BeautifulSoup。但是,当我将元素附加到 HEAD 标记时,输出会立即在 之后添加一个关闭标记,因此 BODY 变得不可见。

将 BASE 标记添加到 HEAD 并打算在页面文本中每隔三个单词加粗的简化代码如下:

def highlight(url):
    page = requests.get(url)
    page_soup = BeautifulSoup(page.content, 'html.parser')

    header = page_soup.find('head')

    base_string = "<base href=\"" + url + "\"/>"
    base_soup = BeautifulSoup(base_string,'html.parser')

    header.append(base_soup)

    para_list = page_soup.find_all('p')
    for para in para_list:
        result = ''
        sent_text = nltk.sent_tokenize(para.text)
        for sent in sent_text:
            tokens = nltk.word_tokenize(sent)
            position = 0
            for token in tokens:
                if position % 3 == 0:
                    text = BOLD(noun, sys1, number)
                    result += text
                else: 
                    result += noun + ' '
            position += 1
        para.replaceWith(BeautifulSoup(result, 'html.parser'))

    return page_soup

这不会以粗体显示任何内容,因为它在正文中找不到任何内容,因为在头部之后添加了一个关闭标签。如果我删除header.append(base_soup),粗体可以正常工作。

如何解决这个问题?

标签: pythonhtmlbeautifulsoup

解决方案


推荐阅读