使用美丽的汤访问附加项目

时间:2016-02-01 01:28:45

标签: python beautifulsoup

我正在尝试使用Beautiful Soup python库将一些内容附加到html页面的主体中。

>>> from bs4 import BeautifulSoup
>>> doc = BeautifulSoup("<html><head></head><body></body></html>", "html.parser")
>>> body = BeautifulSoup("<ol><li>1</li><li>2</li></ol>", "html.parser")
>>> print doc.html.body.ol
None
>>> doc.html.body.append(body)
>>> print doc.html.body.ol
None

追加后,我仍然看到ol标签为空。

>>> body.ol
<ol><li>1</li><li>2</li></ol>
>>> doc.html.body
<body><ol><li>1</li><li>2</li></ol></body>
>>> 

然而。如果我打印整个身体标签,你可以看到内容似乎在那里。我觉得我不太了解追加操作。

编辑:

我不知道为什么,但似乎我可以附加标签而不是根。例如,doc.html.body.append(body.ol)正如我所期望的那样工作。我也可以for tag in body.children: doc.html.body.append(tag)

我的问题是为什么根不会附加?

1 个答案:

答案 0 :(得分:0)

您应该附加Preparing to install archives Downloading Android SDK Platform-tools, revision 23.1 Installing Android SDK Platform-tools, revision 23.1 Stopping ADB server failed (code -1). Installed Android SDK Platform-tools, revision 23.1 而不是body.ol。换句话说,添加body实例而不是Tag实例:

BeautifulSoup

或者,如果您不知道哪个标签是父母,请使用>>> from bs4 import BeautifulSoup >>> >>> doc = BeautifulSoup("<html><head></head><body></body></html>", "html.parser") >>> body = BeautifulSoup("<ol><li>1</li><li>2</li></ol>", "html.parser") >>> >>> doc.html.body.append(body.ol) >>> >>> print(doc.html.body.ol) <ol><li>1</li><li>2</li></ol>

您还可以将解析器切换为body.find()(需要html5lib to be installed):

html5lib