问题在标题中描述。没有什么可说的了。我在工作现场战斗了 2 天——我什么都听不懂。最后,我创建了一个可重现性最低的示例。
我们有一个 HTML 文件:
<!DOCTYPE html>
<html>
<head>
<title>Что внутри тега h4 ?</title>
<meta charset="utf-8">
</head>
<body>
<h4>
111
<p>(1880-1938)</p>
222
<p>Возчик артели возчиков, герой Русско-Японской и Первой мировой войн,
полный Георгиевский кавалер;
Расстрелян в г. Томске в 1938 году.</p>
333
</h4>
</body>
</html>
还有一个行为非常奇怪的小 Python 程序:
#!/usr/bin/python3
from bs4 import BeautifulSoup
with open("index.html", "r") as f:
contents = f.read()
soup = BeautifulSoup(contents, 'lxml')
print(f"HTML:")
print(f"Тег Н4 полностью: {soup.h4}")
print(f"Имя тега: {soup.h4.name}")
print(f"Текст внутри тега: {soup.h4.text}")
尝试运行该程序。<h4>它会将字符串显示为标签的内容111。也就是说,标签的内容<p>是不可见的。好吧,就这样吧。但是线条222也不333可见!而且,如果我调用该方法.finf_all('p4'),什么也找不到!
这是库中的错误吗?或者是否有某种禁止在标签内放置任何标签<h?>?
此代码有效:
结果:
确实,它
lxml不起作用。对于它,标签h4在第一个嵌套标签之前关闭p:结果:
尝试
html.parser- 它有效并且它带有 python: