ruia-motor
A Ruia plugin that uses the motor to store data
Notice: Works on ruia >= 0.8.0
Installation
pip install -U ruia-motor
Usage
ruia-motor will be automatically store data to mongodb:
from ruia import AttrField, Item, Response, Spider, TextField
from ruia_motor import RuiaMotorInsert, RuiaMotorUpdate, init_spider
class HackerNewsItem(Item):
target_item = TextField(css_select="tr.athing")
title = TextField(css_select="a.storylink")
url = AttrField(css_select="a.storylink", attr="href")
async def clean_title(self, value):
return value.strip()
class HackerNewsSpider(Spider):
start_urls = ["https://news.ycombinator.com/news?p=1"]
aiohttp_kwargs = {"proxy": "http://0.0.0.0:1087"}
async def parse(self, response: Response):
async for item in HackerNewsItem.get_items(html=await response.text()):
# Update data
# https://motor.readthedocs.io/en/stable/api-asyncio/asyncio_motor_collection.html#motor.motor_asyncio.AsyncIOMotorCollection.update_one
yield RuiaMotorUpdate(
collection="hn_demo",
filter={"title": item.title},
update={"$set": item.results},
upsert=True,
)
# Insert data
# https://motor.readthedocs.io/en/stable/api-asyncio/asyncio_motor_collection.html#motor.motor_asyncio.AsyncIOMotorCollection.insert_one
# yield RuiaMotorInsert(collection="hn_demo", data=item.results)
async def init_plugins_after_start(spider_ins):
spider_ins.mongodb_config = {"host": "127.0.0.1", "port": 27017, "db": "ruia_motor"}
init_spider(spider_ins=spider_ins)
if __name__ == "__main__":
HackerNewsSpider.start(after_start=init_plugins_after_start)
Enjoy it :)
Metadata
Release files for ruia-motor 0.0.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| ruia_motor-0.0.5.tar.gz | 4.7 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ruia_motor-0.0.5-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 10.8 kB
Release files / ruia_motor-0.0.5.tar.gz
| Download URL | ruia_motor-0.0.5.tar.gz |
|---|---|
| Size | 4.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
969b1dbc29d84bf83f966d779fcb879cad847c07c2ae8e2b0599f56fbd38b0ea
|
|
BLAKE2b-256 checksum How to use checksums |
11a5dd28699aa8eb983e4d251fad45c086fef216c73973f82cd20d920dc751f5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.1 CPython/3.9.7
|
Release files / ruia_motor-0.0.5-py3-none-any.whl
| Download URL | ruia_motor-0.0.5-py3-none-any.whl |
|---|---|
| Size | 6.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
73fa5c26c88b33d5e2dc5e72cfe1bf78399ff8da532e51fb5cc65e9b0433005a
|
|
BLAKE2b-256 checksum How to use checksums |
f87997ed1ef2df8af14ff29587e58a75d98f0683b07600007f465458c141eacb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.1 CPython/3.9.7
|
Security for ruia-motor 0.0.5
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.