如何让 Beautifulsoup 不添加 <html> 或 <?xml ?>

Posted

技术标签:

【中文标题】如何让 Beautifulsoup 不添加 <html> 或 <?xml ?>【英文标题】:How to make Beautifulsoup not adding <html> or <?xml ?> 【发布时间】:2017-08-28 18:02:12 【问题描述】:

有没有办法让beautifulsoup不在xml文件开头添加&lt;?xml version="1.0" encoding="utf-8"?&gt;或者&lt;html&gt; &lt;/html&gt;标签?

我已经阅读了bs4 doc 并尝试了 xml、html 和 lxml 解析器,但结果相似。 我还测试了soup.find('?xml'),这什么也没返回。

$ python
Python 2.7.5 (default, Aug  2 2016, 04:20:16) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from bs4 import BeautifulSoup
>>> xml='<tag>value</tag>'
>>> soup=BeautifulSoup(xml,'xml')
>>> soup
<?xml version="1.0" encoding="utf-8"?>  <=============== 
<tag>value</tag>
>>> soup.find('?xml')
>>> soup=BeautifulSoup(xml,'html')
>>> soup
<html><body><tag>value</tag></body></html>  <===========
>>> soup=BeautifulSoup(xml,'lxml')
>>> soup
<html><body><tag>value</tag></body></html>  <===========
>>> 

【问题讨论】:

【参考方案1】:
#You can directly print the tag (or body). Hope this helps.
from bs4 import BeautifulSoup
xml='<tag>value</tag>'
soup=BeautifulSoup(xml,'lxml')
soup.tag  #or soup.body

#Output:
<tag>value</tag>

【讨论】:

谢谢!这是可能的唯一方法。

以上是关于如何让 Beautifulsoup 不添加 <html> 或 <?xml ?>的主要内容,如果未能解决你的问题,请参考以下文章

如何让 beautifulsoup 对脚本标签的内容进行编码和解码

如何使用 BeautifulSoup 找到评论标签 <!--...-->?

BeautifulSoup 在 findAll 中排除标签

如何将代理添加到 BeautifulSoup 爬虫

为啥 BeautifulSoup 将 <html><body><p> 添加到我的结果中?

如何使用python BeautifulSoup在<a href标签中绘制数据[重复]