抓取的html数据清洗和压缩

2022-02-17  本文已影响0人  刹那的既视感

个人使用的两个模块处理html

清洗标签

官方文档 lxml

from lxml.html import clean
# 除了保留的attribute其他的删除
safe_attrs = frozenset(['controls', 'poster', 'src', 'href', 'alt'])
# 默认删除script之类的无用标签,若需保留则添加scripts=False
# 默认删除的有<script>, javascript, comments, style, <link>, <meta>等
cleaner = clean.Cleaner(safe_attrs_only=True, safe_attrs=safe_attrs)
content = cleaner.clean_html(html)

另PyQuery也可以方便移除指定的标签

from pyquery import PyQuery
doc = PyQuery(html)
doc.remove('script')
return str(doc)

补全html中的链接为绝对值

import lxml
content = lxml.html.fromstring(some_html_page) 
content.make_links_absolute(url_for_some_html_page) 

另bs4方式

from urllib.parse import urljoin

def make_links_absolute(soup, url):
    for tag in soup.findAll('a', href=True):
        tag['href'] = urljoin(url, tag['href'])

html压缩

文档 htmlmin

import htmlmin
content = htmlmin.minify(content, remove_comments=True, remove_all_empty_space=True)
# remove_comments 删除 HTML 中的注释
# remove_all_empty_space 这会删除标签之间的所有空白

print(content)
上一篇 下一篇

猜你喜欢

热点阅读