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在gnu-trove库中是否有任何有序映射?   java Servlet应该有映射,但找不到Servlet   java时间和第二期显示1:10,而不是13:10   java Play Framework 1.2.7 Heroku更新崩溃   线程“main”java中的opencsv异常。lang.NoClassDefFoundError:org/apache/commons/lang3/ObjectUtils   selenium在java中隐藏警告消息   java使用ID引用将JSON实体反序列化为POJO   java无法在JRE 8中加载字体   一个线程中的异常/错误会使整个应用程序停止吗?   java访问重复子规则的元素标签;e、 g.用ANTLR解析(1,2,3)中的a   java如何从平移旋转中找到新坐标   使用HTML Java小程序托管jar文件存在安全问题   java如何按频率而不是字母顺序排列字符串数组   java清除bufferedReader和块以获得更多输入   java解密SAML2断言