feedparser但更快且更差
项目描述
speedparser
Speedparser是对通用Feed解析器的黑色盒式“风格”重新实现。它使用一些feedparser代码用于日期和作者,但主要基于feedparser输出重新实现了其数据标准化算法。它使用lxml进行Feed解析和可选的HTML清理。它与feedparser在严格子集字段中的兼容性非常好,但在该子集之外的字段中表现较差。有关哪些字段兼容性更高或更低以及哪些不兼容的更多信息,请参阅tests/speedparsertests.py。
在Intel(R) Core(TM) i5 750上,仅在一个核心上运行,feedparser在测试Feed集合上管理2.5个Feed/秒(大约在tests/feeds.tar.bz2中有4200个“Feed”),而speedparser在开启HTML清理的情况下管理约65个Feed/秒,关闭清理时约为200个Feed/秒。
安装
pip install speedparser
使用方法
使用方法类似于feedparser
>>> import speedparser >>> result = speedparser.parse(feed) >>> result = speedparser.parse(feed, clean_html=False)
差异
speedparser和feedparser之间有一些接口差异和许多结果差异。最大的相似之处在于,它们都返回一个FeedParserDict()对象(键作为属性可访问),当遇到错误时,它们都设置了bozo键,并且feed和entries键的各个方面很可能是相同或非常相似的。
speedparser 使用与 feedparser 不同的(在某些情况下更少或没有;买家小心)数据清洗算法。当它被启用时,lxml 的 html.cleaner 库将用于清理 HTML 并提供类似但不完全相同的针对各种属性和元素的保护。如果您向“clean_html”关键字参数提供一个自己的 Cleaner 元素,则 speedparser 将使用它来清理源和条目的各种属性。
speedparser 默认不尝试修复字符编码,因为这对于大型源来说可能需要很长时间。如果源的编码值错误,或者您想有额外的错误容忍级别,您可以使用 chardet 模块根据文档检测编码,或者将 encoding=True 传递给 speedparser.parse,如果遇到编码错误,它将回退到编码检测。
如果您的应用程序正在使用 feedparser 同时消费许多源,并且 CPU 成为瓶颈,您可能想尝试使用 speedparser 作为替代方案(使用 feedparser 作为备份)。如果您正在编写不消费许多源的应用程序,或者 CPU 不是问题,您应该使用 feedparser,因为它对不良或格式不正确的数据更灵活,并且具有更好的测试套件。
项目详情
speedparser-0.2.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 1074e230145b4d3fd44386c8f7c20ebc51c444b4e2f8efe811b107cfbb880b4c |
|
MD5 | 8de5f1b0920307880ce402c079c0b435 |
|
BLAKE2b-256 | 9c3d74754b87cce30c790dc359f7e7c86eb20aea7317a22b133f52c1d6a080e5 |