scrapy扩展,用于使用mongoengine文档编写已刮除的项
scrapy-mongoengine-item的Python项目详细描述
把Scrapy和MongoEngine放在一起。
^ tt3}$是一个扩展,允许使用现有的定义{a4} MongoEngine documents。
文档可在Read the Docs上找到。
先决条件
Python 2.7和Python 3.5/3.6都是 支持。对于Python 3,您需要Scrapy v1.1或更高版本。
最新测试的mongoengine版本是MongoEngine 0.17.0。
安装
从pypi安装最新稳定版本:
pip install scrapy-mongoengine-item
或github的最新稳定版本:
pip install https://github.com/barseghyanartur/scrapy-mongoengine-item/archive/stable.tar.gz
或BitBucket的最新稳定版本:
pip install https://bitbucket.org/barseghyanartur/scrapy-mongoengine-item/get/stable.tar.gz
简介
MongoEngineItem是从 在mongoengine文档中,只需创建一个MongoEngineItem,并指定 与之相关的MongoEngine文档。
除了获取在项目上定义的文档字段之外,MongoEngineItem 提供一个方法来创建和填充MongoEngine文档实例 项目数据。
用法
MongoEngineItem的工作方式如下:创建一个子类并定义其 mongoengine_document属性是有效的MongoEngine文档。与 这将为每个MongoEngine文档字段获取一个带有字段的项。
此外,还可以定义文档中不存在的字段,甚至 覆盖模型中存在的字段,在项中定义这些字段。
让我们看一些例子:
为示例创建MongoEngine文档:
frommongoengineimportfields,documentclassPerson(document.Document):name=fields.StringField(max_length=255)age=fields.IntField()
定义基本的MongoEngineItem:
fromscrapy_mongoengine_itemimportMongoEngineItemclassPersonItem(MongoEngineItem):mongoengine_document=Person
MongoEngineItem的工作方式就像垃圾一样:
p=PersonItem()p['name']='John'p['age']=22
要从项目中获取MongoEngine文档,我们调用extra方法 ^ MongoEngineItem:
中的{tt16}$。person=p.save()person.name# 'John'person.age# 22person.id# 1
当我们调用MongoEngineItem.save()时,文档已被保存,我们 可以通过使用commit=False调用它来防止这种情况。我们可以利用 commit=False在MongoEngineItem.save()方法中获取未保存的 文档:
person=p.save(commit=False)person.name# 'John'person.age# 22person.id# None
如前所述,我们可以在项目中添加其他字段:
importscrapyfromscrapy_mongoengine_itemimportMongoEngineItemclassPersonItem(MongoEngineItem):mongoengine_document=Personsex=scrapy.Field()
p=PersonItem()p['name']='John'p['age']=22p['sex']='M'
我们可以用您自己的代码覆盖文档的字段:
classPersonItem(MongoEngineItem):mongoengine_document=Personname=scrapy.Field(default='No Name')
这有助于向字段提供属性,如默认值或任何其他 项目使用的属性。那些额外的字段不会被占用 进行MongoEngineItem.save()时的帐户。
开发
测试
要在工作环境中运行测试,请键入:
./runtests.py
要使用所有受支持的python版本进行测试,请键入:
tox
运行MongoDB
最简单的方法是通过Docker运行它:
docker pull mongo:latest
docker run -p 27017:27017 mongo:latest
编写文档
保持以下层次结构。
===== title ===== header ====== sub-header ---------- sub-sub-header ~~~~~~~~~~~~~~ sub-sub-sub-header ^^^^^^^^^^^^^^^^^^ sub-sub-sub-sub-header ++++++++++++++++++++++ sub-sub-sub-sub-sub-header **************************
许可证
仅限GPL-2.0或LGPL-2.1或更高版本
支架
如有任何问题,请通过Author部分中给出的电子邮件与我联系。