DEV Community

Brad
Brad

Posted on

Python Price Tracker: Monitor Any Website for Price Drops

Python Price Tracker: Monitor Any Website for Price Drops

Automating repetitive tasks saves hours every week. Python makes it surprisingly simple.

The Core Pattern

import requests
from bs4 import BeautifulSoup
import sqlite3
from datetime import datetime

class AutomationTool:
    def __init__(self):
        self.conn = sqlite3.connect('data.db')
        self.setup()

    def setup(self):
        self.conn.execute('''
            CREATE TABLE IF NOT EXISTS records (
                id INTEGER PRIMARY KEY,
                data TEXT,
                timestamp TEXT
            )
        ''')
        self.conn.commit()

    def run(self, target):
        # 1. Fetch data
        headers = {'User-Agent': 'Mozilla/5.0'}
        response = requests.get(target, headers=headers)
        soup = BeautifulSoup(response.text, 'html.parser')

        # 2. Extract what you need
        result = self.parse(soup)

        # 3. Store and act
        self.store(result)
        if self.should_alert(result):
            self.alert(result)

        return result

    def parse(self, soup):
        # Customize this for your target
        return soup.get_text()

    def store(self, data):
        self.conn.execute(
            'INSERT INTO records (data, timestamp) VALUES (?, ?)',
            (str(data), datetime.now().isoformat())
        )
        self.conn.commit()

    def should_alert(self, data):
        return False  # Add your logic here

    def alert(self, data):
        print(f"Alert: {data}")

tool = AutomationTool()
result = tool.run('https://your-target-url.com')
Enter fullscreen mode Exit fullscreen mode

Schedule It to Run Automatically

import schedule
import time

def daily_job():
    tool = AutomationTool()
    tool.run('https://your-target-url.com')

schedule.every().day.at('09:00').do(daily_job)

while True:
    schedule.run_pending()
    time.sleep(60)
Enter fullscreen mode Exit fullscreen mode

Add Email Alerts

import smtplib
from email.mime.text import MIMEText

def send_alert(subject, body, to_email):
    msg = MIMEText(body)
    msg['Subject'] = subject
    msg['From'] = 'your@gmail.com'
    msg['To'] = to_email

    with smtplib.SMTP_SSL('smtp.gmail.com', 465) as server:
        server.login('your@gmail.com', 'app_password')
        server.send_message(msg)
Enter fullscreen mode Exit fullscreen mode

Get 20+ Ready-Made Scripts

I packaged 20+ automation scripts — web trackers, email automation, invoice generators, database tools — all documented and ready to run.

Python Business Automation Toolkit - $9

One-time purchase. Instant download. All code is production-ready.

What are you automating? Comment below!

Top comments (0)