{"id":21522306,"url":"https://github.com/andmerk93/scrapy-parser-test","last_synced_at":"2026-06-19T23:31:19.118Z","repository":{"id":190825539,"uuid":"683422422","full_name":"andmerk93/scrapy-parser-test","owner":"andmerk93","description":"scrapy + csv","archived":false,"fork":false,"pushed_at":"2023-08-26T23:17:49.000Z","size":11,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-17T17:23:27.752Z","etag":null,"topics":["crawler","csv","scrapy"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/andmerk93.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2023-08-26T14:24:23.000Z","updated_at":"2023-10-10T13:31:48.000Z","dependencies_parsed_at":"2023-08-26T15:41:55.952Z","dependency_job_id":"f4755c64-e78d-4a17-8997-891289a516f0","html_url":"https://github.com/andmerk93/scrapy-parser-test","commit_stats":null,"previous_names":["andmerk93/scrapy-parser-test"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/andmerk93/scrapy-parser-test","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andmerk93%2Fscrapy-parser-test","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andmerk93%2Fscrapy-parser-test/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andmerk93%2Fscrapy-parser-test/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andmerk93%2Fscrapy-parser-test/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/andmerk93","download_url":"https://codeload.github.com/andmerk93/scrapy-parser-test/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andmerk93%2Fscrapy-parser-test/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34552295,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-19T02:00:06.005Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["crawler","csv","scrapy"],"created_at":"2024-11-24T01:09:54.886Z","updated_at":"2026-06-19T23:31:19.100Z","avatar_url":"https://github.com/andmerk93.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Проект асинхронного парсинга сайта аптек\n\n## Описание\n\nПроект на Scrapy, позволяет спрасить и сохранить в файл инофрмацию о товарах с сайта аптек.\nСделано в качестве тестового задания в августе 2023. \n\n## Исходное ТЗ\n\nИспользуя фреймворк Scrapy необходимо написать код программы \nдля получения информации о товарах интернет-магазина из списка \nкатегорий по заранее заданному шаблону, данную информацию \nнеобходимо представлять в виде списка словарей \n(один товар - один словарь) и сохрянить в файл с расширением `.json`\n\nНа вход подается список категорий, выбрать минимум 3, \nс количеством от 30 товаров (несколько страниц в категории) \nна сайте `apteka-ot-sklada.ru` \n(например https://apteka-ot-sklada.ru/catalog/sredstva-gigieny/uhod-za-polostyu-rta/zubnye-niti_-ershiki)\n\n\n## Словарь содержащий информацию о товаре\n\n```\n{\n    \"timestamp\":,            # Текущее время в формате timestamp\n    \"RPC\": \"\",               # {str} Уникальный код товара\n    \"url\": \"\",               # {str} Ссылка на страницу товара\n    \"title\": \"\",             # {str} Заголовок/название товара (если в карточке товара указан цвет или объем, необходимо добавить их в title в формате: \"{название}, {цвет}\")\n    \"marketing_tags\": [],    # {list of str} Список тэгов, например: ['Популярный', 'Акция', 'Подарок'], если тэг представлен в виде изображения собирать его не нужно\n    \"brand\": \"\",             # {str} Брэнд товара\n    \"section\": [],           # {list of str} Иерархия разделов, например: ['Игрушки', 'Развивающие и интерактивные игрушки', 'Интерактивные игрушки']\n    \"price_data\": {\n        \"current\": 0.,       # {float} Цена со скидкой, если скидки нет то = original\n        \"original\": 0.,      # {float} Оригинальная цена\n        \"sale_tag\": \"\"       # {str} Если есть скидка на товар то необходимо вычислить процент скидки и записать формате: \"Скидка {}%\"\n    },\n    \"stock\": {\n        \"in_stock\": True,    # {bool} Должно отражать наличие товара в магазине\n        \"count\": 0           # {int} Если есть возможность получить информацию о количестве оставшегося товара в наличии, иначе 0\n    },\n    \"assets\": {\n        \"main_image\": \"\",    # {str} Ссылка на основное изображение товара\n        \"set_images\": [],    # {list of str} Список больших изображений товара\n        \"view360\": [],       # {list of str}\n        \"video\": []          # {list of str} \n    },\n    \"metadata\": {\n        \"__description\": \"\", # {str} Описание товар\n                             # Ниже добавить все характеристики которые могут быть на странице тоавара, такие как Артикул, Код товара, Цвет, Объем, Страна производитель и т.д.\n        \"АРТИКУЛ\": \"A88834\",\n        \"СТРАНА ПРОИЗВОДИТЕЛЬ\": \"Китай\"\n    }\n    \"variants\": 1,           # {int} Кол-во вариантов у товара в карточке (За вариант считать только цвет или объем/масса. Размер у одежды или обуви варинтами не считаются)\n}\n\n```\n\n\n## Требования:\n - Python 3\n - Scrapy\n - lxml\n - и их зависимости (описано в requirements.txt)\n \n## Установка и запуск:\nНа машине должен быть установлен Python актуальной версии (тестировалось на 3.11).\n\nКлонировать репозиторий на машину, с которой будет будет запускаться сервис \n\n```\ngit clone https://github.com/andmerk93/scrapy-parser-test.git\n```\n\nРазвернуть виртуальное окружение python в папке с проектом (scrapy-parser-test)\n```\npython3 -m venv venv\n```\nАктивировать виртуальное окружение для linux/unix\n```\nsource ./venv/bin/activate \n``` \nДля Windows, должно быть разрешено выполнение скриптов Powershell\n```\nvenv\\Scripts\\activate\n``` \n\nС запущенным виртуальным окружением нужно выполнить установку требуемых компонентов\n```\npip install -r requirements.txt\n```\n\nЗатем, выполнить команду\n```\nscrapy crawl apteka\n```\n\nФайл с результатами появятся в исходной папке с названием вида `result_2023-08-26T18-33-25.json`\n\n\nМожно дополнительно сохранить вывод в `csv`\n```\nscrapy crawl apteka -o test.csv\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandmerk93%2Fscrapy-parser-test","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandmerk93%2Fscrapy-parser-test","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandmerk93%2Fscrapy-parser-test/lists"}