Introduction
In this tutorial, you'll learn how to create a simple web scraper to monitor price changes on popular tech products like TVs and Apple devices. This is a practical skill that will help you track deals and find the best Labor Day shopping opportunities. By the end of this tutorial, you'll have a working Python script that can check product prices and notify you when they drop below your target threshold.
Prerequisites
Before starting this tutorial, you'll need:
- A computer with Python installed (version 3.6 or higher)
- Basic understanding of how to open and run Python scripts
- Access to a web browser
- Some familiarity with command line or terminal
Step-by-step instructions
Step 1: Set up your development environment
Install required Python packages
First, you need to install the necessary Python libraries. Open your terminal or command prompt and run these commands:
pip install requests
pip install beautifulsoup4
pip install schedule
Why we install these packages: The requests library helps us fetch web pages, beautifulsoup4 allows us to parse HTML content, and schedule lets us run our script at regular intervals.
Step 2: Create your main Python script
Initialize your project
Create a new file called price_tracker.py and start with this basic structure:
import requests
from bs4 import BeautifulSoup
import time
import schedule
# This is where we'll store our product information
products = [
{
'name': 'Apple iPhone 15 Pro',
'url': 'https://www.amazon.com/dp/B0CHV3796C',
'target_price': 999.99
},
{
'name': 'Samsung 55" 4K Smart TV',
'url': 'https://www.bestbuy.com/site/samsung-55-class-4k-uhd-smart-tv/6540214.p',
'target_price': 699.99
}
]
Why we set up this structure: This creates a list of products we want to monitor, including their names, URLs, and target prices. You can easily add more products to this list later.
Step 3: Create the price checking function
Write the core scraping logic
Add this function to your script:
def check_price(product):
try:
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
}
response = requests.get(product['url'], headers=headers)
soup = BeautifulSoup(response.content, 'html.parser')
# Different websites have different price selectors
# This is a simplified example - you'll need to adjust selectors for each site
price_element = soup.find('span', {'class': 'a-price-whole'})
if price_element:
price = float(price_element.get_text().replace(',', ''))
print(f'{product["name"]}: ${price}')
if price <= product['target_price']:
print(f'*** ALERT: {product["name"]} is below your target price! ***')
return True
else:
print(f'Could not find price for {product["name"]}')
except Exception as e:
print(f'Error checking {product["name"]}: {e}')
return False
Why we use this approach: The function uses requests to fetch the webpage and BeautifulSoup to parse the HTML. We're looking for specific HTML elements that contain price information, which varies by website.
Step 4: Add the main monitoring loop
Implement the scheduling functionality
Add this function to your script:
def monitor_prices():
print('Checking prices...')
for product in products:
check_price(product)
print('Check complete. Waiting for next scheduled check...')
# Schedule the monitoring to run every 30 minutes
schedule.every(30).minutes.do(monitor_prices)
# Run the scheduler
print('Price tracker started. Checking every 30 minutes.')
while True:
schedule.run_pending()
time.sleep(1)
Why we schedule it: This ensures your script runs automatically at regular intervals, checking for price drops without you having to manually run it each time.
Step 5: Test your script
Run and verify functionality
Save your file and run it using:
python price_tracker.py
You should see output showing the current prices of your products. If any are below your target price, you'll see an alert message.
Why test it: This ensures your script works correctly before leaving it running to monitor deals automatically.
Step 6: Customize for your specific needs
Modify product list and target prices
Update your product list with actual URLs and your desired target prices:
# Example of adding more products
products = [
{
'name': 'Apple iPhone 15 Pro',
'url': 'https://www.amazon.com/dp/B0CHV3796C',
'target_price': 999.99
},
{
'name': 'Samsung 55" 4K Smart TV',
'url': 'https://www.bestbuy.com/site/samsung-55-class-4k-uhd-smart-tv/6540214.p',
'target_price': 699.99
},
{
'name': 'Apple MacBook Air M2',
'url': 'https://www.apple.com/shop/buy-mac/macbook-air',
'target_price': 1099.99
}
]
Why customize: Different products and price points will work better for different people's shopping needs and budgets.
Step 7: Advanced enhancement (optional)
Add email notifications
To get notified via email when deals are found, install the smtplib library and add this function:
import smtplib
from email.mime.text import MIMEText
# Add this function to send email alerts
def send_email_alert(product):
# Email configuration - you'll need to set this up
sender_email = "[email protected]"
sender_password = "your_password"
receiver_email = "[email protected]"
message = MIMEText(f"{product['name']} is now ${product['target_price']} or below!")
message["Subject"] = f"Price Alert: {product['name']}"
message["From"] = sender_email
message["To"] = receiver_email
# This part would require actual email setup
# You'd need to configure your email provider's SMTP settings
Why add email alerts: This makes your price tracker more practical by automatically notifying you when deals are found, even when you're not actively monitoring your computer.
Summary
In this tutorial, you've created a simple but effective price tracking tool that can help you find the best Labor Day deals on tech products. You learned how to:
- Install and use Python libraries for web scraping
- Fetch and parse web page content
- Set up automatic monitoring with scheduling
- Customize the tool for your specific products and price points
This tool will help you stay informed about price drops on popular items like TVs and Apple devices, making your Labor Day shopping more efficient and cost-effective. Remember to always respect website terms of service when scraping data, and consider adding delays between requests to avoid overwhelming servers.



