
아마존에서 관심 있는 제품이 설정한 가격 이하로 떨어지면 이메일로 알리기
🔍 유의 사항
- 아마존에서 가격을 추적하고 싶은 상품의 url 사용
- lxml 파서를 사용해야 동작
- 아마존에서 HTML 페이지 요청 시 일부 헤더를 함께 전달해야 실제 웹사이트 HTML값을 반환
- https://myhttpheader.com : 사용자의 브라우저 헤더 확인
- 헤더에
"User-Agent","Accept-Language"값은 꼭 넣기- 상품 가격을 부동 소수점 수로 구해서 출력하기

⌨️ main.py
import requests
from bs4 import BeautifulSoup
import lxml
AMAZON_URL = "https://www.amazon.com/Aeropress-Clear-Coffee-Press-bitterness/dp/B0C3KDC3FJ/?_encoding=UTF8&pd_rd_w=jAf2Q&content-id=amzn1.sym.0e739659-7c9d-4d82-868c-90015618ffcc&pf_rd_p=0e739659-7c9d-4d82-868c-90015618ffcc&pf_rd_r=JPF0B5X1M7759S2ZZV83&pd_rd_wg=6hyiv&pd_rd_r=6dfbe5fb-5543-4062-800b-b8e50b6af1a4&ref_=pd_hp_d_btf_exports_top_sellers_unrec"
headers = {
"User-Agent": "Mozilla/5.0 이하 생략",
"Accept-Language": "ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7"
}
response = requests.get(AMAZON_URL, headers=headers)
soup = BeautifulSoup(response.text, "lxml")
price = soup.find(name="span", class_="aok-offscreen").getText()
price_without_currency = price.split("$")[1]
price_as_float = float(price_without_currency)
🔍 유의 사항
- 목표 가격을 설정하고 상품 가격이 목표 가격보다 낮을 경우 이메일 보내기
(이메일 전송을 테스트하려면 목표 가격을 현재 상품 가격보다 높게 설정)- 이메일에는 상품명, 현재 가격, 상품 구매링크 첨부
- 이메일에 들어갈 메시지는 UTF-8로 인코딩하기(상품 이름에 - 등이 들어가기 때문)
⌨️ main.py
import requests
from bs4 import BeautifulSoup
import lxml
import smtplib
WISH_PRICE = 50.00
MY_EMAIL="이메일 주소"
MY_PASSWORD="비밀번호"
AMAZON_URL = "https://www.amazon.com/Aeropress-Clear-Coffee-Press-bitterness/이하 생략"
headers = {
"User-Agent": "Mozilla/5.0 이하 생략",
"Accept-Language": "ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7"
}
response = requests.get(AMAZON_URL, headers=headers)
soup = BeautifulSoup(response.text, "lxml")
product_title = soup.find(name="span",
class_="a-size-large product-title-word-break").getText().strip()
price = soup.find(name="span", class_="aok-offscreen").getText()
price_without_currency = price.split("$")[1]
price_as_float = float(price_without_currency)
# 이메일 보내기
message = (f"Subject:Amazon Price Alert!\n\n"
f"{product_title}\nis now ${price_as_float}\n{AMAZON_URL}").encode('utf-8')
with smtplib.SMTP("smtp.gmail.com") as connection:
connection.starttls()
connection.login(user=MY_EMAIL, password=MY_PASSWORD)
connection.sendmail(from_addr=MY_EMAIL,
to_addrs=MY_EMAIL,
msg=message)