from bs4 import BeautifulSoup import requests import time import smtplib from email.message import EmailMessage #### Email Info #### # TODO: Update your email, password and recipient my_email = "INSERT YOUR EMAIL" # Don't let anyone see your password! password = "INSERT YOUR PASSWORD" recipient = "INSERT THE EMAIL YOU'RE SENDING IT TO" # headers that the amazon webpage needs headers = { "User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:88.0) Gecko/20100101 Firefox/88.0", "Accept-Language" : "en-US,en;q=0.5" } # Getting the amazon website using the request library response = requests.get("https://www.amazon.com.mx/Aud%C3%ADfonos-inal%C3%A1mbricos-QuietComfort-Amazon-integrada/dp/B0756CYWWD/ref=sr_1_5?__mk_es_MX=%C3%85M%C3%85%C5%BD%C3%95%C3%91&dchild=1&keywords=noise+cancelling+headphones&qid=1620086893&sr=8-5" , headers = headers) amazon_web_page = response.text soup = BeautifulSoup(amazon_web_page, 'lxml') product = soup.title.string[0:68] price = soup.select_one(selector="#priceblock_dealprice").string price = price[1:6] price = price.replace(",", "") price = int(price) def product_price_print(): print(f"The product is: {product}. This product costs {price}. THEY ARE REAL CHEAP, BUY THEM!") product_price_print() the_product_is_cheaper = True iterations = 0 while the_product_is_cheaper: time.sleep(0) minute = 0 iteration = 0 # If the target of the product is less than 4000, then It'll send the message if the_product_is_cheaper == True and product <= 4000: #Sending the message subject = f"{product} are on {price}!!!" body = f"\n\n{product_price_print()}\n\n Your python bot (:" # build-up email details using email.message module message = EmailMessage() message["Subject"] = subject message["From"] = my_email message["To"] = recipient message.set_content(body) # send the message via smtp using details above with smtplib.SMTP("smtp.gmail.com", port=587) as connection: connection.starttls() connection.login(my_email, password=password) connection.send_message(message) the_product_is_cheaper = False