1. 问题描述
在使用lxml.html.clean.Cleaner时,通常看到的代码片段都会将cleaner.page_structure
设置为False
,为什么呢?
cleaner = Cleaner()
cleaner.javascript = True
cleaner.style = True
cleaner.page_structure = False
2. 参数含义
根据lxml的官方文档
page_structure的解释如下:
Structural parts of a page:
<head>, <html>, <title>.
也就是说,如果page_structure = True
(注意:这是默认值),cleaner会去掉HTML中的html、head、title标签。这三个标签就是所谓的页面结构,即page_structure
。
下面通过代码示例来理解这个参数的作用。
from lxml.html.clean import Cleaner
cleaner = Cleaner()
cleaner.javascript = True
cleaner.style = True
# 默认情况下,page_structure=True
cleaner.clean_html("<html><head><title>ABC</title><body><h1>hi</h1></body></html>")
输出结果是
<div>ABC<body><h1>hi</h1></body></div>
head和title都被去掉了,html被替换为了div。
下面看看设置为False
的结果。
cleaner.page_structure=False
cleaner.clean_html("<html><head><title>ABC</title><body><h1>hi</h1></body></html>")
# 输出结果是
'<html><head><title>ABC</title></head><body><h1>hi</h1></body></html>'
3. 结论
一定要记得把cleaner.page_structure设置为False!