{"id":16161551,"url":"https://github.com/gamemann/bestbuy-parser","last_synced_at":"2026-03-11T17:33:24.891Z","repository":{"id":92735408,"uuid":"458121297","full_name":"gamemann/BestBuy-Parser","owner":"gamemann","description":"A personal tool using Python's Scrapy framework to scrape Best Buy's product pages for RTX 3080 TIs and notify if available/not sold out.","archived":false,"fork":false,"pushed_at":"2022-12-09T12:14:24.000Z","size":12,"stargazers_count":36,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-17T00:04:26.636Z","etag":null,"topics":["3080","automation","best","bestbuy","bot","buy","crawler","parser","python","python3","rtx","scrapy","ti"],"latest_commit_sha":null,"homepage":"https://deaconn.net/","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/gamemann.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-02-11T09:26:44.000Z","updated_at":"2025-02-16T12:56:09.000Z","dependencies_parsed_at":"2023-08-22T11:46:26.199Z","dependency_job_id":null,"html_url":"https://github.com/gamemann/BestBuy-Parser","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gamemann%2FBestBuy-Parser","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gamemann%2FBestBuy-Parser/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gamemann%2FBestBuy-Parser/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gamemann%2FBestBuy-Parser/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gamemann","download_url":"https://codeload.github.com/gamemann/BestBuy-Parser/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244318335,"owners_count":20433879,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["3080","automation","best","bestbuy","bot","buy","crawler","parser","python","python3","rtx","scrapy","ti"],"created_at":"2024-10-10T02:25:40.962Z","updated_at":"2025-10-19T22:33:06.102Z","avatar_url":"https://github.com/gamemann.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# BestBuy Parser\n## Description\nMy first project using Python's Scrapy [framework](https://scrapy.org/).\n\nI'm using this project personally for a couple friends of mine and I. Basically, it scrapes a products listing [page](https://www.bestbuy.com/site/searchpage.jsp?_dyncharset=UTF-8\u0026browsedCategory=abcat0507002\u0026iht=n\u0026ks=960\u0026list=y\u0026qp=gpusv_facet%3DGraphics%20Processing%20Unit%20(GPU)~NVIDIA%20GeForce%20RTX%203080%20Ti\u0026sc=Global\u0026st=categoryid%24abcat0507002\u0026type=page\u0026usc=All%20Categories) from BestBuy that lists RTX 3080 TIs. It scans each product and if the `c-button-disable` class doesn't exist within each entry (indicating it is not sold out and available), it will email a list of users from the `settings.py` file. It keeps each ID tracked in SQLite to make sure users don't get emailed more than once.\n\n## Requirements\nThe Scrapy framework is required and may be installed with the following.\n\n```bash\npython3 -m pip install scrapy\n```\n\n## Settings\nSettings are configured in the `src/bestbuy_parser/bestbuy_parser/settings.py` file. The following are defaults.\n\n```python\n# General Scrapy settings.\nBOT_NAME = 'bestbuy_parser'\n\nSPIDER_MODULES = ['bestbuy_parser.spiders']\nNEWSPIDER_MODULE = 'bestbuy_parser.spiders'\n\nTELNETCONSOLE_ENABLED = False\nLOG_LEVEL = 'ERROR'\n\n# The User Agent used to crawl.\nUSER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'\n\n# Obey robots.txt rules\nROBOTSTXT_OBEY = True\n\n# Best Buy Parser-specific settings.\n\n# The email's subject to send.\nMAIL_SUBJECT = \"RTX 3080 TI In Stock On Best Buy!\"\n\n# Where the email is coming from.\nMAIN_FROM = \"test@domain.com\"\n\n# The email body.\nMAIL_BODY = '\u003chtml\u003e\u003cbody\u003e\u003cul\u003e\u003cli\u003e\u003ca href=\"https://www.bestbuy.com{link}\"\u003e{name}\u003c/a\u003e\u003c/li\u003e\u003cli\u003e{price}\u003c/li\u003e\u003c/ul\u003e\u003c/body\u003e\u003c/html\u003e'\n\n# Recipients to send to.\nMAIL_TO = [\n    'test@domain2.com'\n]\n\n# If any items exceed this price and are labeled as available, users will not be notified on this product.\nMAX_PRICE = 1500.00\n\n# How often to scan in seconds.\nSCAN_TIME = 5.0\n\n# Whether to print to `stdout` when a product isn't sold out/valid and a user is being emailed.\nPRINT_WHEN_NOT_SOLDOUT = True\n```\n\n## Running The Program\nYou must change the working directory to `src/bestbuy_parser/bestbuy_parser` via `cd`. Afterwards, you may run the following.\n\n```bash\npython3 parse.py\n```\n\nThis will run the program until a keyboard interrupt.\n\n## Systemd Service\nA `systemd` service is included in the `systemd/` directory. It is assuming you cloned the repository into `/usr/src` (you will need to change the systemd file if this is not correct).\n\nYou may install the `systemd` service via the following command as root (or ran with `sudo`).\n\n```bash\nsudo make install\n```\n\n## Credits\n* [Christian Deacon](https://github.com/gamemann)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgamemann%2Fbestbuy-parser","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgamemann%2Fbestbuy-parser","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgamemann%2Fbestbuy-parser/lists"}