Alright folks, lemme tell you ’bout this little project I’ve been messin’ with – I’m callin’ it “hitting up”. It’s basically me tryin’ to automate a task that was eatin’ up way too much of my time. So, grab a coffee, and let’s dive in.

The Problem: Okay, so picture this. I’m constantly needin’ to check a bunch of different websites for updates – price changes, new articles, all that jazz. I was literally copy-pastin’ URLs into my browser, refreshin’ every hour, and takin’ notes. Super tedious, right?
The Idea: I was like, “There’s gotta be a better way!” So, I figured I’d build a script that would automatically hit up those sites, grab the relevant info, and let me know when somethin’ changed. Boom, “hitting up” was born.
The Tools: I decided to keep it simple. Python’s my go-to for quick scripts, and the requests
and BeautifulSoup4
libraries are perfect for web scraping. For notifications, I figured I’d just use email for now. No need to overcomplicate things!
The Process (the nitty-gritty):
- Step 1: Getting the Data. First thing’s first, I needed to get the HTML from the websites. I used the
requests
library toGET
the content of each URL. Pretty straightforward stuff:import requests
response = *(url)
html_content = *
- Step 2: Parsing the HTML. This is where
BeautifulSoup4
came in. I used it to parse the HTML content and extract the specific data I was interested in. Figuring out the right HTML tags and attributes to target took some trial and error using inspect element in my browser, I had to do a little digging, but I eventually got it:from bs4 import BeautifulSoup
soup = BeautifulSoup(html_content, '*')
# Example: Extracting a price from a specific HTML element
price = *('span', class_='price').text
- Step 3: Storing the Data. I needed to store the data from each site so I could compare it later. For simplicity, I just used a simple Python dictionary:
data = {}
data[url] = {
'price': price,
'last_updated': *()
I initially started with just storing this info in memory, but quickly realised that would be a nightmare as soon as the script restarted, so I then used a `json` file.
- Step 4: Comparing Data and Sending Notifications. The core of the script! I compared the current data with the previously stored data. If there were any changes, I’d send myself an email using the
smtplib
library:import smtplib
from * import MIMEText
def send_email(subject, body):
# Your email sending logic here
pass
if data[url]['price'] != old_data[url]['price']:
send_email('Price Change!', f'The price for {url} has changed!')
- Step 5: Scheduling To schedule the script to run every hour I used the `schedule` package. Super easy, and makes it so I can set it and forget it.
import schedule
import time
def job():
print("Doing the job!")
#The code that does the job goes here
*().*(job)
while True:
*_pending()
*(1)
The Challenges:
- Dynamic Websites: Some websites use JavaScript to load content, which means the initial HTML I fetched didn’t contain the data I needed. I had to look into using Selenium or Puppeteer to render the JavaScript before scraping. That was a whole can of worms I didn’t initially expect!
- Website Structure Changes: Websites change their HTML structure all the time. I had to make the script flexible enough to handle minor changes without breaking.
- Rate Limiting: I didn’t want to hammer the websites with requests, so I added delays between requests to avoid getting blocked.
The Results: It ain’t perfect, but it works! I’m now getting email notifications whenever something changes on the websites I’m tracking. It’s saved me a ton of time and brainpower.
What’s Next: I’m thinkin’ of addin’ some more features:

- A proper database: Using a JSON file is fine for now, but a real database would be way more scalable.
- More sophisticated notifications: Maybe push notifications to my phone?
- A web interface: So I can easily add and remove websites to track.
So yeah, that’s “hitting up” in a nutshell. It’s a simple project, but it’s been a real game-changer for me. Hope it gives you some ideas for your own automation projects!