跳转到主要内容

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键,并且feedentries键的各个方面很可能是相同或非常相似的。

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 (17.9 kB 查看哈希值)

上传时间 源代码

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面