pyRustScraperApi


NamepyRustScraperApi JSON
Version 1.0.2 PyPI version JSON
download
home_pageNone
SummaryPython клиент для взаимодействия с RustScraperApi
upload_time2025-01-19 05:32:01
maintainerNone
docs_urlNone
authorNone
requires_python>=3.9
licenseNone
keywords api ozon маркетплейс озон парсер парсинг
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # pyRustScraperApi

Клиентская библиотека для **RustScraperApi**

**RustScraperApi** — это высокопроизводительное API для сбора данных о товарах с популярных маркетплейсов, разработанное на языке программирования [Rust](https://ru.wikipedia.org/wiki/Rust_(%D1%8F%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F)). Оно спроектировано для работы в условиях высокой нагрузки, обеспечивая надежность и максимальную скорость работы.

С помощью RustScraperApi вы можете разрабатывать автоматизированные системы для мониторинга и управления ценами на товары. Этот инструмент идеально подходит для сбора статистики, анализа и решения широкого спектра задач, соответствующих вашим бизнес-целям.

Проект разрабатывается и поддерживается одним человеком.
По любым вопросам:

- Telegram: [@Nikita5612](https://t.me/Nikita5612)

Полный доступ к сервису предоставляется на коммерческой основе. Подробности можно узнать в личных сообщениях.

Доступ для тестирования предоставляется бесплатно, однако он имеет ограничения по времени использования и лимитам в заказе.

### Установка

```bash
pip install pyRustScraperApi
```

### Получение тестового токена

Для начала работы получите тестовый токен через метод `/test-token`. Токен предоставляется для уникальных IP-адресов и действует ограниченное время.

```python
from pyRustScraperApi import Client

client = Client()
test_token = client.get_test_token()
print(test_token)
```

### Парсинг товаров

```python
from pyRustScraperApi import Client
from pyRustScraperApi.models import Order
import json


def main():
    client = Client(
        base_domain="http://185.204.2.206",
        token="rs.ikx1u7xvQfBCgLt9RchNCaOB4d"
    )

    # Товары на парсинг
    products = [
        "oz/1596079870",
        "ym/1732949807-100352880819-5997015",
        "wb/300365052",
        "mm/100028286032",
        "https://www.ozon.ru/product/nozhnitsy-kantselyarskie-21-sm-calligrata-nerzhaveyushchaya-stal-plastik-173091046/",
        "https://www.wildberries.ru/catalog/95979396/detail.aspx",
        "https://market.yandex.ru/product--igrovaia-pristavka-sony-playstation-5-slim-digital-edition-bez-diskovoda-1000-gb-ssd-2-geimpada-bez-igr-belyi/925519649?sku=103706885579&uniqueId=162025048",
        "https://megamarket.ru/catalog/details/nabor-instrumentov-v-keyse-108-predmetov-100065768905/"
	]

    # Создание заказа
    order = Order(
		products,
		cookies=[],
  		proxy_pool=["2kpF3S:GP1FUb@147.44.62.127:8000"]
	)

    # Отправка закза
    order_hash = client.send_order(order)

    # Отлеживание выполнение задачи через WebSocket
    for task in client.stream_task(order_hash):
        print(task)

    print(f"\n\n{task.extract_result_data()}")
    print(f"\n\n{json.dumps(task.result, ensure_ascii=False, indent=4)}")


if __name__ == "__main__":
    main()
```

### Асинхронный клиент

```python
from pyRustScraperApi import AsyncClient

async with AsyncClient(token="your_token") as client:
    order_hash = await client.send_order(order)
    async for update in client.stream_task(order_hash):
        print(update)
```

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "pyRustScraperApi",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.9",
    "maintainer_email": null,
    "keywords": "api, ozon, \u043c\u0430\u0440\u043a\u0435\u0442\u043f\u043b\u0435\u0439\u0441, \u043e\u0437\u043e\u043d, \u043f\u0430\u0440\u0441\u0435\u0440, \u043f\u0430\u0440\u0441\u0438\u043d\u0433",
    "author": null,
    "author_email": "Nikita5612 <groz.yt56@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/06/84/3b28543c04b9110abd172dcd0129c91241a162f825ad0fc13a0c19cae2cd/pyrustscraperapi-1.0.2.tar.gz",
    "platform": null,
    "description": "# pyRustScraperApi\n\n\u041a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0430\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0434\u043b\u044f **RustScraperApi**\n\n**RustScraperApi** \u2014 \u044d\u0442\u043e \u0432\u044b\u0441\u043e\u043a\u043e\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 API \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u043e \u0442\u043e\u0432\u0430\u0440\u0430\u0445 \u0441 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u043c\u0430\u0440\u043a\u0435\u0442\u043f\u043b\u0435\u0439\u0441\u043e\u0432, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u043d\u043e\u0435 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f [Rust](https://ru.wikipedia.org/wiki/Rust_(%D1%8F%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F)). \u041e\u043d\u043e \u0441\u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0432 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445 \u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438, \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u044f \u043d\u0430\u0434\u0435\u0436\u043d\u043e\u0441\u0442\u044c \u0438 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0443\u044e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u044b.\n\n\u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e RustScraperApi \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0434\u043b\u044f \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430 \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0446\u0435\u043d\u0430\u043c\u0438 \u043d\u0430 \u0442\u043e\u0432\u0430\u0440\u044b. \u042d\u0442\u043e\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u0430 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0438, \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0448\u0438\u0440\u043e\u043a\u043e\u0433\u043e \u0441\u043f\u0435\u043a\u0442\u0440\u0430 \u0437\u0430\u0434\u0430\u0447, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0432\u0430\u0448\u0438\u043c \u0431\u0438\u0437\u043d\u0435\u0441-\u0446\u0435\u043b\u044f\u043c.\n\n\u041f\u0440\u043e\u0435\u043a\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u0438\u043c \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u043e\u043c.\n\u041f\u043e \u043b\u044e\u0431\u044b\u043c \u0432\u043e\u043f\u0440\u043e\u0441\u0430\u043c:\n\n- Telegram: [@Nikita5612](https://t.me/Nikita5612)\n\n\u041f\u043e\u043b\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0441\u0435\u0440\u0432\u0438\u0441\u0443 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0430 \u043a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u043e\u0439 \u043e\u0441\u043d\u043e\u0432\u0435. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u043c\u043e\u0436\u043d\u043e \u0443\u0437\u043d\u0430\u0442\u044c \u0432 \u043b\u0438\u0447\u043d\u044b\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f\u0445.\n\n\u0414\u043e\u0441\u0442\u0443\u043f \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e, \u043e\u0434\u043d\u0430\u043a\u043e \u043e\u043d \u0438\u043c\u0435\u0435\u0442 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u043f\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u043b\u0438\u043c\u0438\u0442\u0430\u043c \u0432 \u0437\u0430\u043a\u0430\u0437\u0435.\n\n### \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430\n\n```bash\npip install pyRustScraperApi\n```\n\n### \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u0442\u043e\u043a\u0435\u043d\u0430\n\n\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0435 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0439 \u0442\u043e\u043a\u0435\u043d \u0447\u0435\u0440\u0435\u0437 \u043c\u0435\u0442\u043e\u0434 `/test-token`. \u0422\u043e\u043a\u0435\u043d \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0445 IP-\u0430\u0434\u0440\u0435\u0441\u043e\u0432 \u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f.\n\n```python\nfrom pyRustScraperApi import Client\n\nclient = Client()\ntest_token = client.get_test_token()\nprint(test_token)\n```\n\n### \u041f\u0430\u0440\u0441\u0438\u043d\u0433 \u0442\u043e\u0432\u0430\u0440\u043e\u0432\n\n```python\nfrom pyRustScraperApi import Client\nfrom pyRustScraperApi.models import Order\nimport json\n\n\ndef main():\n    client = Client(\n        base_domain=\"http://185.204.2.206\",\n        token=\"rs.ikx1u7xvQfBCgLt9RchNCaOB4d\"\n    )\n\n    # \u0422\u043e\u0432\u0430\u0440\u044b \u043d\u0430 \u043f\u0430\u0440\u0441\u0438\u043d\u0433\n    products = [\n        \"oz/1596079870\",\n        \"ym/1732949807-100352880819-5997015\",\n        \"wb/300365052\",\n        \"mm/100028286032\",\n        \"https://www.ozon.ru/product/nozhnitsy-kantselyarskie-21-sm-calligrata-nerzhaveyushchaya-stal-plastik-173091046/\",\n        \"https://www.wildberries.ru/catalog/95979396/detail.aspx\",\n        \"https://market.yandex.ru/product--igrovaia-pristavka-sony-playstation-5-slim-digital-edition-bez-diskovoda-1000-gb-ssd-2-geimpada-bez-igr-belyi/925519649?sku=103706885579&uniqueId=162025048\",\n        \"https://megamarket.ru/catalog/details/nabor-instrumentov-v-keyse-108-predmetov-100065768905/\"\n\t]\n\n    # \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0437\u0430\u043a\u0430\u0437\u0430\n    order = Order(\n\t\tproducts,\n\t\tcookies=[],\n  \t\tproxy_pool=[\"2kpF3S:GP1FUb@147.44.62.127:8000\"]\n\t)\n\n    # \u041e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 \u0437\u0430\u043a\u0437\u0430\n    order_hash = client.send_order(order)\n\n    # \u041e\u0442\u043b\u0435\u0436\u0438\u0432\u0430\u043d\u0438\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u0447\u0435\u0440\u0435\u0437 WebSocket\n    for task in client.stream_task(order_hash):\n        print(task)\n\n    print(f\"\\n\\n{task.extract_result_data()}\")\n    print(f\"\\n\\n{json.dumps(task.result, ensure_ascii=False, indent=4)}\")\n\n\nif __name__ == \"__main__\":\n    main()\n```\n\n### \u0410\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439 \u043a\u043b\u0438\u0435\u043d\u0442\n\n```python\nfrom pyRustScraperApi import AsyncClient\n\nasync with AsyncClient(token=\"your_token\") as client:\n    order_hash = await client.send_order(order)\n    async for update in client.stream_task(order_hash):\n        print(update)\n```\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "Python \u043a\u043b\u0438\u0435\u043d\u0442 \u0434\u043b\u044f \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 RustScraperApi",
    "version": "1.0.2",
    "project_urls": {
        "Documentation": "http://185.204.2.206/swagger-ui/",
        "Homepage": "http://185.204.2.206",
        "Repository": "https://github.com/Nikita55612/pyRustScraperApi"
    },
    "split_keywords": [
        "api",
        " ozon",
        " \u043c\u0430\u0440\u043a\u0435\u0442\u043f\u043b\u0435\u0439\u0441",
        " \u043e\u0437\u043e\u043d",
        " \u043f\u0430\u0440\u0441\u0435\u0440",
        " \u043f\u0430\u0440\u0441\u0438\u043d\u0433"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "0aa5e332df89939dc8ef1f76c107f1a2de603d6e4fccba170f324aadbd2fbff6",
                "md5": "46af291bc09e8f87026eac4f1c1174c9",
                "sha256": "78a99e2a751c5b525dcf92b10b33781ecb7bd9b0ecc358166edf5d4382b0e742"
            },
            "downloads": -1,
            "filename": "pyrustscraperapi-1.0.2-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "46af291bc09e8f87026eac4f1c1174c9",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.9",
            "size": 10488,
            "upload_time": "2025-01-19T05:31:49",
            "upload_time_iso_8601": "2025-01-19T05:31:49.076394Z",
            "url": "https://files.pythonhosted.org/packages/0a/a5/e332df89939dc8ef1f76c107f1a2de603d6e4fccba170f324aadbd2fbff6/pyrustscraperapi-1.0.2-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "06843b28543c04b9110abd172dcd0129c91241a162f825ad0fc13a0c19cae2cd",
                "md5": "da2aa5364d5c38dda56301fe6586054f",
                "sha256": "0c93ee26be0dddbff43c39e49a095af2873b666c43e0874f2677b076557ce389"
            },
            "downloads": -1,
            "filename": "pyrustscraperapi-1.0.2.tar.gz",
            "has_sig": false,
            "md5_digest": "da2aa5364d5c38dda56301fe6586054f",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.9",
            "size": 8033460,
            "upload_time": "2025-01-19T05:32:01",
            "upload_time_iso_8601": "2025-01-19T05:32:01.057375Z",
            "url": "https://files.pythonhosted.org/packages/06/84/3b28543c04b9110abd172dcd0129c91241a162f825ad0fc13a0c19cae2cd/pyrustscraperapi-1.0.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-01-19 05:32:01",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "Nikita55612",
    "github_project": "pyRustScraperApi",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "pyrustscraperapi"
}
        
Elapsed time: 1.13681s