import requests
from bs4 import BeautifulSoup
response = requests.get("https://emart.ssg.com/obanjang/main.ssg?myclick=1000040579314&clickIcon=1000040579314#1000040579314")
# print(response.text)
soup = BeautifulSoup(response.content, "html.parser")
result = soup.find(name="span", class_="obj_price_num ssg_price")
product_price = result.getText().split(",")
price = int(product_price[0] + product_price[1])
아마존페이지는 robot인지 체크?하는 것 때문인지 값추출이 안됐음..
질의응답 보니까 다들 그냥 건너뛰어서 다음 section에서 selenium배우라고 하고,
아니면 월마트 ㅋㅋㅋ에서 하니까 금방 했다고 하길래
월마트 들어가봤더니 아마존이랑 똑같이 나오길래 혹시나..?하고 이마트로 했더니 바로 되는겨,,
다만 가격 중간에 ,
가 들어가서 조금 코드가 안예쁘긴 하지만,,
이 방법말고 다른 방법 있으려나..?
+) 2022.03.22
사실 이미 배웠겠지만 잊은.... .replace(",", "")
사용했으면 좀더 깔끔했겠다!!
product_price = result.getText().replace(",", "")
대신 아래 이메일 코드가 조금 달라짐,, FINAL에서 첨부
import smtplib
MY_EMAIL = "**********@yahoo.com"
MY_PASSWORD = "*********"
if price < 10000:
with smtplib.SMTP("smtp.mail.yahoo.com") as connection:
connection.starttls()
connection.login(MY_EMAIL, MY_PASSWORD)
connection.sendmail(
from_addr=MY_EMAIL,
to_addrs="*************@gmail.com",
msg=f"Subject:Price Alert\n\nThe price is {product_price[0]},{product_price[1]}won now!"
)
smtp는 손쉽게 했구,, 근데 사실 smtp는 msg
내용만 달라지는 거라 다른 플젝에서 복붙해서 쓰는데,,
사실 복붙 안하고 생으로 쓰라고 하면 못쓸거 같긴함.. 이 습관 고치긴 해야하는데,,
암튼 로봇인지 체크안하는 이마트 덕에 손쉽게 플젝 마무리했는데
다음 section에서 selenium배워서 아마존 다시 해보는걸로 합시다.
import requests
from bs4 import BeautifulSoup
import smtplib
MY_EMAIL = "test525awesome@yahoo.com"
MY_PASSWORD = "fatcplygxzmveyck"
response = requests.get("https://emart.ssg.com/obanjang/main.ssg?myclick=1000040579314&clickIcon=1000040579314#1000040579314")
# print(response.text)
soup = BeautifulSoup(response.content, "html.parser")
result = soup.find(name="span", class_="obj_price_num ssg_price")
product_price = result.getText().replace(",", "")
if int(product_price) < 10000:
with smtplib.SMTP("smtp.mail.yahoo.com") as connection:
connection.starttls()
connection.login(MY_EMAIL, MY_PASSWORD)
connection.sendmail(
from_addr=MY_EMAIL,
to_addrs="test0525awesome@gmail.com",
msg=f"Subject:Price Alert\n\nThe price is {result.getText()}won now!"
)
근데 사실 이렇게만 보내면 가격만 딸랑 와서 어떤 상품인지 알수가 없는ㅋㅋㅋ
(특정 상품이 아니라 오반장(오늘 할인 어쩌구)이라서 ㅋㅋ)
상품 이름도 추출해서 같이 메일보내면 좋겠다 그래