연쇄 할인마 진행 중 예전에 작업했던 uplay의 판매목록중 할인이 끝낫음에도 불구하고 여전히 목록에 남아있음을 발견했다. 할인이 끝나 원가로 판매하는 상품의 코드는 당연히 할인중인 상품과 코드의 구성이 달랐다. 그러니 당연히 기존의 작성했던 코드는 오류가 발생했고, 약간의 수정을 거쳐야 했다.
for game in games:
game_link = game.select_one('페이지의 지정된 할인품목 링크부분')
game_img = game.select_one('페이지의 지정된 할인품목 이미지부분')
game_title = game.select_one('페이지의 지정된 할인품목 제목부분')
game_original_price = game.select_one('페이지의 지정된 할인품목 원가부분')
game_discount_rate = game.select_one('페이지의 지정된 할인품목 할인율부분')
game_discount_price = game.select_one('페이지의 지정된 할인품목 할인가부분')
오류가 발생했던 코드였다. 만약 전 품목이 여전히 할인중이고, 품목의 코드가 모두 같다면 평화롭고 잔잔하게 흘러갔겠지만, 딱 원가판매하는 품목에서만 누락된 코드부분에서 오류가 발생했다.
그래서 할인품목과 원가품목을 비교하여 원가품목에는 없는 코드를 찾아냈다. 조건문을 사용해서 원가품목에 없는 부분이 존재한다면 할인품목이란 의미니까 그부분은 평소와 같게 설정하고, 아니라면 할인율을 0으로 할인가를 None으로 설정했다.
for game in games:
game_link = game.select_one('페이지의 지정된 할인품목 링크부분')
game_img = game.select_one('페이지의 지정된 할인품목 이미지부분')
game_title = game.select_one('페이지의 지정된 할인품목 링크부분')
game_original_price = game.select_one('페이지의 지정된 할인품목 원가부분')
if game.select_one('할인품목엔 있지만, 원가품목엔 없는부분') != None:
game_discount_rate = game.select_one('페이지의 지정된 할인품목 할인율부분')
game_discount_price = game.select_one('페이지의 지정된 할인품목 할인가부분')
else:
game_discount_rate = 0
game_discount_price = None
위의 조건문이 서술한 코드이다. 오랜만의 if문이라 매우 간단한 조건문의 사용이였지만, 안쓰면 무뎌진다고.. 이런것 마저도 검색을 거쳐서 겨우 사용했다.
모든 트러블이 그렇듯이 돌이켜보면 아주 간단한 문제지만, 오늘은 더욱 그러했다. 오류의 코드를 구글링해보고, 코드를 여러번 바꿔서 오류지점을 다르게 해서 디버깅을 하던중 공통지점이 원가품목이란걸 알게되서 해결할 수 있었다. 조건문의 미숙한 사용도 문제였다. 역시 뭐든 손에 자주 잡아봐야 익숙해진다고, 의도적으로 조금씩 사용하는 발전이 필요할듯 싶다.