Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/102.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用lxml清除html,但添加空格_Python_Html - Fatal编程技术网

Python 使用lxml清除html,但添加空格

Python 使用lxml清除html,但添加空格,python,html,Python,Html,我用这个答案来清理一个HTML文件 它在删除所有html、脚本和样式标记方面做得很好,但是如果文本中没有空间,则清洁器不会添加空间。这对于菜单这样没有空格的东西来说是个问题,所以它是一个单词,因为它们一起运行 关于如何防止这种情况,增加空间,或其他什么的想法?谢谢这可能对未来的任何人都有帮助,也可能没有帮助,但这对我来说很有用 from lxml import html as HTML from lxml.html.clean import clean_html from lxml.html.

我用这个答案来清理一个HTML文件

它在删除所有html、脚本和样式标记方面做得很好,但是如果文本中没有空间,则清洁器不会添加空间。这对于菜单这样没有空格的东西来说是个问题,所以它是一个单词,因为它们一起运行


关于如何防止这种情况,增加空间,或其他什么的想法?谢谢

这可能对未来的任何人都有帮助,也可能没有帮助,但这对我来说很有用

from lxml import html as HTML
from lxml.html.clean import clean_html
from lxml.html.clean import Cleaner
import re

html = "<div>Test</div><div>Test 2</div>"
spaced_html = re.sub("</", " </", html)
doc = HTML.document_fromstring(spaced_html)
cleaner = Cleaner()
cleaner.javascript = True 
cleaner.style = True
doc = cleaner.clean_html(doc)
text = doc.text_content()
text = re.sub(' +',' ',text)
从lxml将html导入为html
从lxml.html.clean导入clean_html
从lxml.html.clean导入清理器
进口稀土
html=“test2”

一种相对简洁的方法是

import lxml.html
from lxml import etree

html = "<div>Test</div><div>Test 2</div>"
document = lxml.html.document_fromstring(html)
text = " ".join(etree.XPath("//text()")(document))
import lxml.html
从lxml导入etree
html=“test2”
document=lxml.html.document\u fromstring(html)
text=”“.join(etree.XPath(“//text()”)(文档))

(另请参见)

如果您想解决相同的问题,但使用
bs4
并删除
lxml

from bs4 import BeautifulSoup

html = "<div>Test</div><div>Test 2</div>"
soup = BeautifulSoup(html)
text = soup.getText(separator=u' ')
从bs4导入美化组
html=“test2”
soup=BeautifulSoup(html)
text=soup.getText(分隔符=u“”)

这是否回答了您的问题?