일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 쉬티
- udemy
- 계산기
- Tequila
- Endpoint
- 프로그램
- 오류
- Pygame
- API플랫폼
- 게임
- phython
- HTTP
- SMTP
- Game
- HTML
- 상태코드
- ndarray
- 파싱
- 프로젝트
- 최저가
- 웹페이지
- 파이썬
- twilio
- API
- 웹크롤링
- Sheety
- 유데미
- 부트스트랩
- class
- Python
- Today
- Total
데이터 분석가
아마존 자동 가격 추적기 프로그램 본문
안녕하세요!
여러분은 혹시 가격이 떨어지길 기다리는 물건이 있을까요??
저는 요즘 Noise cancelling 노이즈 캔슬링 기능이 되는 sony 헤드폰 sony wh 1000 xm5에 관심이 있습니다.
헌데, 가격대가 만만치 않아서 기다리고 있어요(sony wh 1000 xm5 공식 홈 기준 현재 50만원)
그래서 이번 시간에는 아마존을 기준으로 sony wh 1000 xm5 가격을 추적하여 원하는 가격까지 떨어질 때
알림을 주는 프로그램을 만들어볼게요.
자 일단 가격 확인
---------------------------------------2023-04-18 기준으로 398 $ 대략 400달러군요 -------------------------------------------------
하지만 합리적인 구매를 위해 과연 얼마에 사는게 좋을까 고민인데
해당 사이트를 통해 가장 싼 가격은 2023.1.14 270$ 이었고, 가장 비싼 가격은 현재 398$이네요
흠 그렇다면 현재 398달러이니 역시 조금 비싼 값인건 틀림 없네요 !!
저는 그러면 중간에 보이는 1월 가격인 300달러로 기준을 잡겠습니다.
필요한 사이트
1.My HTTP Header
웹 크롤링을 하기 위해선 자신의 HTTP 정보를 해당 사이트에 보내는 작업이 필요하기 때문에 해당 사이트 확인.
import requests
from bs4 import BeautifulSoup
# HTTP 요청을 보낼 때 헤더 정보를 설정
headers = {
"Your Url",
"Your Agent"
}
# 상품 정보를 가져올 웹 페이지의 URL
product_url = "https://www.amazon.com/dp/B09XSDMT4F/ref=twister_B0C2CGKKZZ?_encoding=UTF8&th=1"
위 링크에서 자신의 HTTP 정보를 확인합니다
그리고 아마존에서 sony wh-1000xm5 가격 정보를 가져옵니다 !
# 웹 페이지에 HTTP 요청을 보내고, 응답을 받는다
response = requests.get(url=product_url, headers=headers)
# 응답으로 받은 HTML 문서를 파싱!
product_html = response.text
soup = BeautifulSoup(product_html, "html.parser")
입력한 HTTP 정보를 기반으로 웹 페이지에 GET 요청을 보내고 받는다 !
받은 정보를 파싱!
# 상품 가격 정보를 가져온다
price = soup.select_one(".a-price span").getText()
currency = "$"
price_without_currency = price.split(currency)[1]
price_as_float = float(price_without_currency.replace(",",""))
# 상품 가격 정보를 출력!
print(price_as_float)
상품의 URL에서 HTML을 분석해서 가격 정보를 가져온다
통화 단위는 $로 돼 있어서 $로 가져온 다음
split과 인덱싱, replace로 쓸데없는 정보를 없애고 가격만 가져온다
398.0 출력됩니다.
Google SMTP 프로토콜 설정
https://an-ju-seong-coding.tistory.com/42
2차 앱 비밀번호 생성 후,
# BUY_PRICE 변수에 제품의 최대 구매 가격을 설정
BUY_PRICE = 300
# 이메일 알림을 보낼 때 사용할 SMTP 서버 정보와 계정 정보를 설정
YOUR_SMTP_ADDRESS="smtp.gmail.com"
YOUR_EMAIL="YOUR_EMAIL"
YOUR_PASSWORD ="YOUR_PASSWORD"
300 달러를 기준으로 이보다 적은 가격일 경우 !
앞서 생성한 2차 앱 비밀번호와 각각의 이메일을 입력해줍시다!
# 현재 제품 가격이 설정한 BUY_PRICE보다 낮은 경우 이메일 알림을 보낸다
if price_as_float < BUY_PRICE:
# 알림에 포함될 제목과 메시지 내용을 설정
message = f"{title} is now {price}"
msg=f"Subject:Amazon Price Alert for {title}\n\n{message}\n{product_url}"
# SMTP 서버와 연결합니다.
with smtplib.SMTP(YOUR_SMTP_ADDRESS, port=587) as connection:
# 연결 보안을 위해 TLS를 사용.
connection.starttls()
# 계정 정보를 이용해 로그인
result = connection.login(YOUR_EMAIL, YOUR_PASSWORD)
# 이메일을 발송
connection.sendmail(
from_addr=YOUR_EMAIL,
to_addrs=YOUR_EMAIL,
msg=msg
)
if price_as_float < BUY_PRICE: 식을 이용해 BUY_PRICE 300달러 밑으로 떨어졌을 경우
제목과 함께 떨어진 가격을 보냅니다!
해당 ID와 비밀번호 등 객인적인 데이터가 모두 유효하다면
상품 정보와 가격이 지정된 메일로 보내지게 됩니다 !
해당 코드를 지정해놓고 원하는 상품을 합리적인 가격에 구매할 수 있도록 바랄게요 !
'파이썬(python) 프로젝트 모음' 카테고리의 다른 글
쿠키 클릭커(Cookie Clicker) 자동 프로그램 (0) | 2023.04.21 |
---|---|
웹크롤링을 이용한 영화추천 목록 프로그램 (0) | 2023.04.19 |
파이썬 최저가 항공권 티켓 알림 프로젝트 (0) | 2023.04.10 |
파이썬 쉬티(Sheety) & 운동 추적(Nutritionix) 프로그램 (0) | 2023.04.07 |
파이썬 국제 우주 정거장(ISS) 추적 프로그램 (0) | 2023.04.06 |