Я пытаюсь написать преобразователь веб-страницы, который добавляет сценарии и другие теги в заголовок веб-страницы, а также размечает содержимое в теле. Я использую 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)
, жирный шрифт работает отлично.
Как это исправить?