Scrapy扩展,用于使用MongoEngine文档编写抓取项
项目描述
将Scrapy和MongoEngine结合在一起。
scrapy-mongoengine-item是一个扩展,允许您使用现有的MongoEngine文档定义Scrapy items。
文档可在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 文档
from mongoengine import fields, document
class Person(document.Document):
name = fields.StringField(max_length=255)
age = fields.IntField()
定义基本的 MongoEngineItem
from scrapy_mongoengine_item import MongoEngineItem
class PersonItem(MongoEngineItem):
mongoengine_document = Person
MongoEngineItem 与 Scrapy items 的工作方式相同
p = PersonItem()
p['name'] = 'John'
p['age'] = 22
要从项目获取 MongoEngine 文档,我们调用 MongoEngineItem 的额外方法 MongoEngineItem.save()
person = p.save()
person.name
# 'John'
person.age
# 22
person.id
# 1
当调用 MongoEngineItem.save() 时,文档已保存,我们可以通过使用 commit=False 来防止这种情况。我们可以在 MongoEngineItem.save() 方法中使用 commit=False 来获取一个未保存的文档
person = p.save(commit=False)
person.name
# 'John'
person.age
# 22
person.id
# None
正如之前所说的,我们可以向项目添加其他字段
import scrapy
from scrapy_mongoengine_item import MongoEngineItem
class PersonItem(MongoEngineItem):
mongoengine_document = Person
sex = scrapy.Field()
p = PersonItem()
p['name'] = 'John'
p['age'] = 22
p['sex'] = 'M'
并且我们可以用您自己的字段覆盖文档的字段
class PersonItem(MongoEngineItem):
mongoengine_document = Person
name = 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-only OR LGPL-2.1-or-later
支持
对于任何问题,请通过作者部分提供的电子邮件与我联系。
项目详情
下载文件
下载适用于您平台的自定义文件。如果您不确定要选择哪个,请了解有关 安装包 的更多信息。
源代码发行版
构建发行版
scrapy-mongoengine-item-0.1.5.tar.gz 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 2e331e25c920eddc282399054c2ae8a121e432a74e75c3528b935984b7c242ed |
|
MD5 | 2aeccd15c065a96beaa9407e9b2cc443 |
|
BLAKE2b-256 | e31316adb922920a15a6ee5acd06201920f407a95e299cb928e5d5d9f1aebae1 |
scrapy_mongoengine_item-0.1.5-py2.py3-none-any.whl 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 3368410304d7dd9628c02d85433b078ff396cc257e291e812f09e5f4425c6ccc |
|
MD5 | 07203cf9e874a9f17df3c75c7b529d7d |
|
BLAKE2b-256 | 3621154db3ed6cef4b3e9c7c2347033e223b4c336e118cfa0ab94b72a39026a9 |