Почему добавление к заголовку тега в BeautifulSoup закрывает тег HTML сразу после заголовка? - PullRequest
0 голосов
/ 02 июля 2018

Я пытаюсь написать преобразователь веб-страницы, который добавляет сценарии и другие теги в заголовок веб-страницы, а также размечает содержимое в теле. Я использую BeautifulSoup. Однако, когда я добавляю элементы к тегу HEAD, вывод получает закрывающий тег, добавляемый сразу после, поэтому тело становится невидимым.

Упрощенный код, который добавляет тег BASE к заголовку и намеревается выделять жирным шрифтом каждое третье слово в тексте страницы, выглядит следующим образом:

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), жирный шрифт работает отлично.

Как это исправить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...