scrapy扩展,用于使用mongoengine文档编写已刮除的项

scrapy-mongoengine-item的Python项目详细描述


ScrapyMongoEngine放在一起。

PyPI VersionBuild StatusGPL-2.0-only OR LGPL-2.1-or-later

^ tt3}$是一个扩展,允许使用现有的定义{a4} MongoEngine documents

文档可在Read the Docs上找到。

先决条件

Python 2.7Python 3.5/3.6都是 支持。对于Python 3,您需要Scrapy v1.1或更高版本。

最新测试的mongoengine版本是MongoEngine 0.17.0

安装

  1. 从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=FalseMongoEngineItem.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部分中给出的电子邮件与我联系。

作者

艺术酒吧<;artur.barseghyan@gmail.com>;

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
字符串Java字母替换无效   java Spring Roo JPA MS SQL Server无法打开JPA EntityManager组织。冬眠例外GenericJDBCException:无法打开连接   在scala中使用JavaWS对大型数据文件进行java流式处理   Java编译器是否将字节和短字符识别为文本?   java无法查找符号错误,空指针   mongodb在Java中重用数据库连接   java将多个StringArray从字符串文件获取到活动中   java是一个变量,它只保存最后一次鼠标单击的坐标   c#尺寸有限;添加、删除和洗牌   java如何在Android中显示来自资产文件夹的文本文件中的文本   Android应用程序中的java Tensorflow Lite自定义对象检测模型错误   java如何在foreachloop中使用scanner将来自命令行的输入存储到数组中   java如何定义一个好的存储库接口   Android中的java解析动态json对象