python-scripts/scripts/Amazon_price_tracker/scap.py

50 lines
2.2 KiB
Python
Raw Permalink Normal View History

2022-10-10 16:26:38 +00:00
import time
import requests # Will help us to get out url directed
from bs4 import BeautifulSoup # Will help us to scrap us the data
import os
import smtplib # this module is used for sending mail
from email.message import EmailMessage
email_id = os.environ.get("EMAIL_ADDR")
email_pass = os.environ.get("EMAIL_PASS")
# I have used this since I have hidden my credentials
URL = "https://www.amazon.in/Apple-MacBook-Chip-13-inch-256GB/dp/B08N5W4NNB/ref=sr_1_3?crid=3BF9J6OT56GW0&keywords=macbook+m1&qid=1665331351&qu=eyJxc2MiOiIzLjgzIiwicXNhIjoiMi43NiIsInFzcCI6IjEuNTIifQ%3D%3D&sprefix=macbook+m1%2Caps%2C3675&sr=8-3"
def check_price():
#Copy url of the product that you are looking for
headers = {"user-Agents" : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36'}
# Now lets print our product title to veerify that its working
page = requests.get(URL, headers = headers)
soup = BeautifulSoup(page.content, 'html.parser')
title = soup.find(class_ = "a-size-large product-title-word-break").get_text()
price = soup.find(class_ = "a-price-whole").get_text()
converted_price = price[:6].replace(",","") # We don't want comma so we replaced with ""
print(title.strip())
print(converted_price)
# Now we will send mail if the converted price is less than present price
if(converted_price < 92890):
send_mail()
def send_mail():
message = EmailMessage()
message['Subject'] = "Your favourite product is now at cheaper price!!😍"
message['From'] = email_id
message['to'] = "mobir99513@lutota.com" #Any random email you can give whom you want to send the email
message.set_content("Hey check this amazon link : https://www.amazon.in/Apple-MacBook-Chip-13-inch-256GB/dp/B08N5W4NNB/ref=sr_1_3?crid=3BF9J6OT56GW0&keywords=macbook+m1&qid=1665331351&qu=eyJxc2MiOiIzLjgzIiwicXNhIjoiMi43NiIsInFzcCI6IjEuNTIifQ%3D%3D&sprefix=macbook+m1%2Caps%2C3675&sr=8-3")
with smtplib.SMTP_SSL('smtp.gmail.com',465) as smtp: #465 is the port number
smtp.login(email_id, email_pass)
smtp.send_message(message)
while True:
check_price()
time.sleep(10)