일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Normalizing flow
- Generative model
- GenerativeModel
- iterm2환경설정
- 캐나다월세
- 프라이탁
- agnoster폰트
- Docker
- 캐나다 TD 한국인 직원 예약
- 프라이탁 존버
- 콘도렌트
- GAN
- DTW
- 머신러닝
- 캐나다 은행계좌 개설
- 캐나다 은행 계좌 개설
- EATS
- MachineLearning
- 딥러닝
- agnoster폰트꺠짐
- 터미널꾸미기
- iterm2자동완성
- agnoster폰트깨짐
- Flow
- 캐나다 TDBAnk
- 캐나다 TD 예약
- 캐나다 TD 한국인 예약
- iterm2꾸미기
- 캐나다콘도렌트
- pytorch
- Today
- Total
TechNOTE
Python Selenium Crawler For Freitag : 갖고 싶은 거에 진심인 편.. 본문
서론 (안읽어도 됨)
연구실 가던 중 1층에서.. 어떤 분이 멘 가방을 봤는데 너무 예뻤다....
때마침 잔고에 여유도 있어서 나도 바로 사야겠다고 결심을 했다!!
이라는 브랜드의 가방인데.. 이럴 수가 서치를 해 본 결과
세상에 하나밖에 없는 디자인 + 업사이클링 브랜드 라는 것이다~~ 와 환경도 보호하고 정말 좋다
그런데 문제는 ... ㅜ_ㅜ 내가 사고 싶은 디자인을 사려면 사이트를 계속해서 새로고침해서 들어가서 가장 먼저 결제하는 수고를 거쳐야 했다..
내가 사고 싶은 모델은 프라이탁의 덱스터.
내 13인치 맥북이 들어가는 메신저백을 사고 싶어서 덱스터를 골랐다.
이틀간의 존버 끝에 내 맘에 드는 디자인을 발견하고 바로 결제에 임할 수 있었는데, 이럴 수가........
프라이탁은 결제가 완료되었을 때 결제 상품의 상세컷을 열람할수 없는 시스템을 가지고 있었다.. 그래서 내가 주문한 물품의 디자인을 확인할 수 가 없는 것 ㅜㅜ (사기 전에 대충 봐서 확신이 없었다..)
아마 결제 취소하는 사람들이 많아질까봐 그런 것 같았는데.. 가격도 엄청 비싸면서 이런것도 잘 안되어있구.. 에휴 정말 실망을 금치못했다.... 그래서 결국 결제 취소 이메일을 보냈다. 아니 사이트도 정말 이상해서 사이트에서 취소도 안되구...
이런 메일을 받았다.
또다시 이틀동안 프라이탁에 매달리는 그런 수고를 할 수는 없어서.. 크롤러를 짜기로 했다 (여태까지 서론이었음)
크롤러는?
셀레니움을 이용하기로 결정...
개발자 도구를 열어서 이미지의 tag를 파악해 준다.
그리고 해당 링크 가져와서 element 의 src 저장할 수 있도록 설정
def get_new_items():
driver = webdriver.Chrome('./chromedriver')
url = 'https://www.freitag.ch/en/f14'
driver.get(url)
new_items = []
for item in driver.find_elements_by_css_selector('#block-freitag-content > article > section:nth-child(2) > div > div > div > div > div > div > div > div > div > div.flex.flex-wrap > div:nth-child(n) > div > img'):
image_src = item.get_attribute('src')
if image_src not in curr_items:
new_items.append(image_src)
curr_items.append(image_src)
return new_items
다음과 같이 src image link를 확인할 수 있다. ^^
이렇게 확인할 수 있구.. 카카오톡 메시지가 오도록 만들어 보자.
카카오톡 연동
ㅎㅎㅎㅎ 개발자 센터 가입해서 인증 키 만들어준다.. 이부분은 다른데 검색하면 나오니까 패스
일단 앱 하나 만들고.. 이 부분은 하나하나 캡쳐하기가 너무 귀찮아서 ..
이대로 api 를 날리면 된다구 한다.
난 리스트를 이용하여 프라이탁 이미지들이 한번에 쫙 뜨도록 할 거다. (근데 해보니까 3개씩밖에 안떠서 3개씩 짤라서 보내도록 코드 짤 것..) 일단 보내는 api 함수
def send_api(lists):
url = "https://kapi.kakao.com/v2/api/talk/memo/default/send"
headers = {
"Authorization": "Bearer " + "access code"
}
lists = [{"title": '가방',
"description": '새로운거',
"image_url": str(elem),
"image_width" : 50, "image_height" : 50,
"link": {
"web_url": "www.freitag.ch/en/f14"
}} for elem in lists]
template = {
"object_type" : "list",
"header_title" : "dexter",
"header_link" : {
"web_url" : "www.freitag.ch/en/f14",
"mobile_web_url" : "www.freitag.ch/en/f14"
},
"contents" : lists,
"buttons" : [
{
"title" : "웹으로 이동",
"link" : {
"web_url" : "www.freitag.ch/en/f14",
"mobile_web_url" : "www.freitag.ch/en/f14"
}
}
]
}
data = {
"template_object" : json.dumps(template)
}
response = requests.post(url, data=data, headers=headers)
if response.json().get('result_code') == 0:
print('Success!')
else:
print('Failed. Error Message: ' + str(response.json()))
시간마다 크롤 & 호출하게 만들기
일단 3개씩 잘라서 보내주는 함수 그리고 5분마다 실행되도록 했다. threading library 이용
def call():
new_items = get_new_items()
print('called')
if new_items:
for i in range(0, len(new_items)//3+1):
if new_items[i*3:(i+1)*3]:
send_api(new_items[i*3:(i+1)*3])
else:
print('Nothing New')
threading.Timer(300,call).start()
결과물
이제 새로운게 업데이트 된다면 이렇게 나에게 메시지가 온다 ^_^ 제발..
내 맘에 쏙 드는 예쁜 가방 살수 있길 기원한다..
github.com/juheeuu/freitag-crawler
코드는 여기에 ㅎㅎ
예쁜 가방을 살 수 있기를 PLZ~~
Reference
'일상' 카테고리의 다른 글
애플워치 se 고장 수리 후기 (2) | 2021.08.25 |
---|---|
브리타 정수기 후기 (1) | 2021.03.22 |
아이폰 12 미니 자급제 후기 (2) | 2020.11.26 |
애플워치 SE VS 애플워치 6 (0) | 2020.10.14 |