数据转换与操作库
easydata的Python项目详细描述
warning: | ^{tt1}$ is in early stages of development; backwards incompatible changes are possible without deprecation warning until beta status is reached and therefore is not suitable to be used in production. |
---|
概述
EasyData是提供项数据转换的数据对象模式 从各种源(文本、html、xml、json、字典、列表等)到 python字典,甚至可以按顺序组合不同类型的源代码 转换成字典。在
它在炉边使用基于组件的映射,其概念类似于ORM 模型。在
文件
文档可在https://easydata.readthedocs.io/和^{tt3}在线获得$ 目录。在
使用EasyData的好处是:
- 关注面向对象的业务逻辑
- 不同源之间的统一提取逻辑
- 大大加快了创建转换器/解析器的开发过程
- 由于它提供了清晰的可读性和 明确每个组件的功能。在
- 提取和解析逻辑的可重用性
- 用于解析的高级和低级选项,这样我们就不会遇到任何限制
- 根据需要创建自定义组件的选项
- 默认值可以通过不同级别的配置进行更改
- 创建测试用例是一件轻而易举的事,因为每个组件都是为了 必要时可单独使用。在
- 自动完成功能适用于公共类或方法上的所有参数。在
应用:
- 刮网。它可以很容易地与scrapy或任何其他python集成 基于解决方案,甚至是您自己的解决方案。在
- 转换来自不同格式的API和FEED的数据。在
- 正在为API或FEED转换/准备数据。在
- 为数据库转换/准备数据。在
注意
EasyData没有绑定到任何框架,它也不是一个框架,它可以 很容易添加到现有项目中。在
要求
- Python 6.3+
- 适用于Linux、Windows、macOS、BSD
安装
捷径:
pip install easydata
请参阅文档中的“安装”部分,网址为 https://easydata.readthedocs.io/en/latest/installation.html了解更多详细信息。在
示例
下面我们将给出一个简单的例子,这样你可以得到一些介绍, EasyData的工作原理。有关更高级的示例或教程,请参阅 到文档。在
让我们对以下HTML进行转换:
^{pr2}$现在让我们创建一个ItemModel,它将处理上面的HTML,并将其解析为 项目dict。在
fromeasydataimportItemModel,parsersfromeasydata.queriesimportpqclassProductItemModel(ItemModel):item_name=parsers.Text(pq('.name::text'),)item_brand=parsers.Text(pq('.brand::text'))item_description=parsers.Description(pq('#description::text'))item_price=parsers.PriceFloat(pq('#price::text'))item_sale_price=parsers.PriceFloat(pq('#sale-price::text'))item_color=parsers.Feature(pq('#description::text'),key='color')item_stock=parsers.Bool(pq('.stock::attr(available)'),contains=['yes'])item_images=parsers.List(pq('.images img::items'),parser=parsers.UrlParser(pq('::src')))""" Alternative with selecting src values in a first css query: item_images = parsers.ListParser( pq('.images img::src-items'), parser=parsers.UrlParser() ) """
在下面的示例中,我们将演示新创建的ProductItemModel 将把提供的HTML数据解析为dict对象。在
>>>item_model=ProductItemModel()>>>item_model.parse(test_html)
输出:
{'brand':'EasyData','description':'Basic product info. EasyData product is newest addition \ to python world. Color: Black. Material: Aluminium.','color':'Black','images':['http://demo.com/img1.jpg','http://demo.com/img2.jpg','http://demo.com/img3.jpg'],'name':'EasyData Test Product Item','price':99.9,'sale_price':49.9,'stock':True}
- 项目
标签: