
<h3 align=center>Набор удобных и структурированных парсеров для популярной биржи игровых ценностей <a href="https://funpay.com">FunPay</a>.</h3>
<hr>
### ⚡ Скорость
FunPay Parser использует [Selectolax](https://github.com/rushter/selectolax) на [Lexbor](https://github.com/lexbor/lexbor),
что делает скорость парсинга крайне высокой. Например, парсинг 4000 лотов занимает всего ~0.2 секунды!
### ✅ Удобство
Парсеры преобразуют HTML в удобные и структурированные датаклассы.
### 📊 Покрытие
С помощью FunPay Parser можно спарсить 99% всех сущностей FunPay. Начиная с бейджиков и заканчивая целыми страницами.
### 🛠️ Надёжность
Для большинства парсеров написано по несколько тест-кейсов, основанных на реальном HTML [FunPay](https://funpay.com).
### 🧪 Поддержка MyPy
FunPay Parsers полностью поддерживает Mypy и обеспечивает строгую статическую типизацию для повышения надёжности кода.
## Установка
```commandline
pip install funpayparsers
```
## Пример использования
```python
from funpayparsers.parsers.page_parsers import MainPageParser
import requests
html = requests.get('https://funpay.com').content.decode()
main_page = MainPageParser(html).parse()
for i in main_page.categories:
print(f'{i.full_name} (ID: {i.id})')
```
```
Abyss of Dungeons (ID: 754)
Acrobat (ID: 655)
Adobe (ID: 652)
AFK Arena (ID: 250)
AFK Journey (ID: 503)
After Effects (ID: 654)
Age of Empires Mobile (ID: 628)
Age of Mythology: Retold (ID: 534)
Age of Wonders 4 (ID: 344)
...
```
## 🗨️ Telegram чат
Если у вас возникли какие-либо вопросы, вы можете задать их в нашем [Telegram чате](https://t.me/funpay_hub)
## ⭐ Понравился проект?
Если вы нашли использование `funpayparsers` удобным, будем рады, если вы поставите звезду 😀
Raw data
{
"_id": null,
"home_page": null,
"name": "funpayparsers",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": "Qvvonk <qvvonk@gmail.com>",
"keywords": "api, bot, funpay, funpayapi, funpaybot, funpayparser, parser",
"author": null,
"author_email": "Qvvonk <qvvonk@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/8c/39/62fc09d1996c673800817d217e5d7fe454906d8d3cd612eeabc441f1884f/funpayparsers-0.1.1.tar.gz",
"platform": null,
"description": "\n\n<h3 align=center>\u041d\u0430\u0431\u043e\u0440 \u0443\u0434\u043e\u0431\u043d\u044b\u0445 \u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043f\u0430\u0440\u0441\u0435\u0440\u043e\u0432 \u0434\u043b\u044f \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0439 \u0431\u0438\u0440\u0436\u0438 \u0438\u0433\u0440\u043e\u0432\u044b\u0445 \u0446\u0435\u043d\u043d\u043e\u0441\u0442\u0435\u0439 <a href=\"https://funpay.com\">FunPay</a>.</h3>\n<hr>\n\n### \u26a1 \u0421\u043a\u043e\u0440\u043e\u0441\u0442\u044c\nFunPay Parser \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 [Selectolax](https://github.com/rushter/selectolax) \u043d\u0430 [Lexbor](https://github.com/lexbor/lexbor),\n\u0447\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0430 \u043a\u0440\u0430\u0439\u043d\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u0439. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0430\u0440\u0441\u0438\u043d\u0433 4000 \u043b\u043e\u0442\u043e\u0432 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 \u0432\u0441\u0435\u0433\u043e ~0.2 \u0441\u0435\u043a\u0443\u043d\u0434\u044b!\n\n### \u2705 \u0423\u0434\u043e\u0431\u0441\u0442\u0432\u043e\n\u041f\u0430\u0440\u0441\u0435\u0440\u044b \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u044e\u0442 HTML \u0432 \u0443\u0434\u043e\u0431\u043d\u044b\u0435 \u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0434\u0430\u0442\u0430\u043a\u043b\u0430\u0441\u0441\u044b.\n\n### \ud83d\udcca \u041f\u043e\u043a\u0440\u044b\u0442\u0438\u0435\n\u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e FunPay Parser \u043c\u043e\u0436\u043d\u043e \u0441\u043f\u0430\u0440\u0441\u0438\u0442\u044c 99% \u0432\u0441\u0435\u0445 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439 FunPay. \u041d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 \u0431\u0435\u0439\u0434\u0436\u0438\u043a\u043e\u0432 \u0438 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u044f \u0446\u0435\u043b\u044b\u043c\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u043c\u0438.\n\n### \ud83d\udee0\ufe0f \u041d\u0430\u0434\u0451\u0436\u043d\u043e\u0441\u0442\u044c\n\u0414\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u043f\u0430\u0440\u0441\u0435\u0440\u043e\u0432 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u043f\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0442\u0435\u0441\u0442-\u043a\u0435\u0439\u0441\u043e\u0432, \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c HTML [FunPay](https://funpay.com).\n\n### \ud83e\uddea \u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 MyPy\nFunPay Parsers \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 Mypy \u0438 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u0441\u0442\u0440\u043e\u0433\u0443\u044e \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u0442\u0438\u043f\u0438\u0437\u0430\u0446\u0438\u044e \u0434\u043b\u044f \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u044f \u043d\u0430\u0434\u0451\u0436\u043d\u043e\u0441\u0442\u0438 \u043a\u043e\u0434\u0430.\n\n## \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430\n```commandline\npip install funpayparsers\n```\n\n## \u041f\u0440\u0438\u043c\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f\n```python\nfrom funpayparsers.parsers.page_parsers import MainPageParser\nimport requests\n\nhtml = requests.get('https://funpay.com').content.decode()\nmain_page = MainPageParser(html).parse()\n\nfor i in main_page.categories:\n print(f'{i.full_name} (ID: {i.id})')\n```\n```\nAbyss of Dungeons (ID: 754)\nAcrobat (ID: 655)\nAdobe (ID: 652)\nAFK Arena (ID: 250)\nAFK Journey (ID: 503)\nAfter Effects (ID: 654)\nAge of Empires Mobile (ID: 628)\nAge of Mythology: Retold (ID: 534)\nAge of Wonders 4 (ID: 344)\n...\n```\n\n## \ud83d\udde8\ufe0f Telegram \u0447\u0430\u0442\n\u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0438 \u043a\u0430\u043a\u0438\u0435-\u043b\u0438\u0431\u043e \u0432\u043e\u043f\u0440\u043e\u0441\u044b, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u0434\u0430\u0442\u044c \u0438\u0445 \u0432 \u043d\u0430\u0448\u0435\u043c [Telegram \u0447\u0430\u0442\u0435](https://t.me/funpay_hub)\n\n\n## \u2b50 \u041f\u043e\u043d\u0440\u0430\u0432\u0438\u043b\u0441\u044f \u043f\u0440\u043e\u0435\u043a\u0442?\n\u0415\u0441\u043b\u0438 \u0432\u044b \u043d\u0430\u0448\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 `funpayparsers` \u0443\u0434\u043e\u0431\u043d\u044b\u043c, \u0431\u0443\u0434\u0435\u043c \u0440\u0430\u0434\u044b, \u0435\u0441\u043b\u0438 \u0432\u044b \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u0435 \u0437\u0432\u0435\u0437\u0434\u0443 \ud83d\ude00\n",
"bugtrack_url": null,
"license": null,
"summary": "Set of parsers for FunPay website.",
"version": "0.1.1",
"project_urls": {
"Issues": "https://github.com/funpyahub/funpayparsers/issues",
"Repository": "https://github.com/funpayhub/funpayparsers",
"Telegram Channel": "https://t.me/funpay_hub"
},
"split_keywords": [
"api",
" bot",
" funpay",
" funpayapi",
" funpaybot",
" funpayparser",
" parser"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "b5c22bd0a6f3361b67b88e2f51079d3fe9c52a3f2e69fa96068d7e13d981cedf",
"md5": "d47095f4e209eff0d4069f16e2f6e159",
"sha256": "07d95925795bd67e9ecfa41fbea48fa046d9d75ec2a143172efdafd995193aca"
},
"downloads": -1,
"filename": "funpayparsers-0.1.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "d47095f4e209eff0d4069f16e2f6e159",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10",
"size": 61508,
"upload_time": "2025-07-18T05:41:36",
"upload_time_iso_8601": "2025-07-18T05:41:36.233396Z",
"url": "https://files.pythonhosted.org/packages/b5/c2/2bd0a6f3361b67b88e2f51079d3fe9c52a3f2e69fa96068d7e13d981cedf/funpayparsers-0.1.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "8c3962fc09d1996c673800817d217e5d7fe454906d8d3cd612eeabc441f1884f",
"md5": "b1e69b24ad582af7b0fc2651535d28c6",
"sha256": "c3221d55fd5e5043ce8047fcad57ec33b75e596a3e742711388219869af486aa"
},
"downloads": -1,
"filename": "funpayparsers-0.1.1.tar.gz",
"has_sig": false,
"md5_digest": "b1e69b24ad582af7b0fc2651535d28c6",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 47419,
"upload_time": "2025-07-18T05:41:37",
"upload_time_iso_8601": "2025-07-18T05:41:37.669887Z",
"url": "https://files.pythonhosted.org/packages/8c/39/62fc09d1996c673800817d217e5d7fe454906d8d3cd612eeabc441f1884f/funpayparsers-0.1.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-18 05:41:37",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "funpyahub",
"github_project": "funpayparsers",
"github_not_found": true,
"lcname": "funpayparsers"
}