Today I Learned
날짜
2024년 11월 26일 화요일
내용
HTML 검사
네이버 배너 이미지의 실 사용 상태를 스프레드시트에 업데이트 해준다. 거의 대부분(80~90%)가 미연동상태로 표시된다. 미연동 상태라 함은 우리 어드민에 접속해 배너이미지 삭제하기 버튼을 누르진 않았지만, 유저 본인이 네이버 상품 수정 페이지에서 우리 이미지를 삭제했다는 뜻이다. 우리 서비스를 이렇게 안 쓸리 없다는 희망을 품고 실제 미연동상태인 데이터들을 확인했다. 역시 실제로는 쓰는데, 미연동 상태로 표시되는 것들이 대부분이었다. 배너 이미지는 매 주 자동 업데이트 및 업로드 되는데 미연동상태로 처리되어 업데이트조차 되지 않았다. 뭔가 로직에 이상이 생겼다.
상품 상세페이지에 배너이미지가 있는지 확인하는 방법은 생각보다 원시(?)적이다. 상품 상세페이지 HTMl 을 string으로 불러와
f'<a href="[https://www.instagram.com/{instagram_account.username}](https://www.instagram.com/%7Binstagram_account.username%7D)"><img src="{image_url}" style="display: block; width: 100%; max-width: 860px; margin: 0 auto;" /></a>'
가 들어있는지 확인한다. 미연동 상태인 상품들은 실제론 이게 있는데도 없다고 판단하여 상태가 변경된 것들이다. 두 가지 이유는
- 지난 주, 업데이트로 인해 html에 태그가 추가되었다. 따라서 그 이전에 사용하던 업체들의 hmtl은
<a>
태그는 없이<img>
태그만 존재했을 것이고, 이 로직에 포함되지 않았을 것이다. - 이번주 초에 상품명에 있는 특수문자를 처리했었다. 이전에 삽입되어있는 곳에는 처리가 안되어있고 찾을때는 처리한 링크를 찾으니 포함되지 않았을 것이다.
실제로 원인을 찾아가는 과정에서, 이 두개가 적용되지 않는 케이스에서도 탐지가 되지 않는 문제가 발생했다. HTML 그대로를 처리하면 빈칸이나 띄어쓰기등이 많이 발생하여 생긴 원인이라고 한다. HTML을 항상 단순화 처리하여 비교하도록 코드를 추가했다.
1
2
3
def normalize_html(html):
"""HTML 문자열을 비교하기 쉽게 정리"""
return re.sub(r"\s+", " ", html).strip()
이럼 디스크 조각모음마냥 딱 붙어서 나오니, 놓칠일이 없어졌다. 물론 현재 문제가 되는 샵들은 싹다 내가 수동으로 처리해 주어야 한다…
회고
AI 비켜라 내가 간다.