python - 为什么在 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)
,粗体可以正常工作。
如何解决这个问题?
解决方案
推荐阅读
- javascript - 我第一次加载页面时收到“TypeError:表单未定义”
- wpf - 使用特定版本的 DLLS 的问题
- typescript - 类型以表示在 Typescript 中具有特定值类型的对象的键
- android - 如何在 Webview android 中打开不安全的 http 网页
- django - Django - 默认表单字段的值
- android - 在 RecyclerView 中未调用 ViewModel onCleared
- python - scipy.optimize 具有多个边界、约束和连续字段
- unit-testing - 导出 Golang 包进行测试?
- java - Jenkins 中没有这样的文件异常,但在本地运行良好
- ios - 改进复杂集合视图构造中的滚动