Automation

[네이버 블로그 자동화 - 2] 좋아요 누르기 자동화

zamezzz 2024. 10. 26. 01:03

[네이버 블로그 자동화 - 2] 좋아요 누르기 자동화

 

오늘은 두 번째로 좋아요 누르기 자동화를 해보겠습니다.

 

 

위 그림과 같이 네이버 블로그 하단 태그 아래에 '공감' 이라는 부분인데요.

 

하트를 포함한 좌측 영역을 눌러야 공감이 체크되고

다른 곳을 누르면 공감 상세 창이 열리며, 누가 공감을 눌렀는지 보이게됩니다.

 

그럼 저 하트 부분의 태그가 무엇인지 먼저 볼까요?

 

위에 보이는 부분이 버튼 영역입니다.

 

여기서 가장 중요한것은 사실 마지막에 보이시는 .on 입니다.

 

아래 같은 그림을 다시 볼까요?

 

 

여기는 .off로 되어 있네요. 어떤 차이가 있을까요?

 

당연히 눈치 채셨겠지만,

on은 내가 이미 공감을 누른 상태
off는 내가 아직 공감을 누르지 않는 상태입니다.

 

이것이 중요한 이유는 내가 이미 누른 게시글에 다시 공감을 누를 때 공감이 해제되기 때문입니다.

그러므로 공감 자동화해서 가장 중요한 것은 이 on/off를 체크하여 이미 on인 경우 클릭되지 않도록 해야 합니다.

 

그럼 이 내용을 바탕으로 간단히 코드를 작성해보겠습니다. 결과는 아래와 같습니다.

driver.switch_to.frame('mainFrame')

driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")

like_btn = WebDriverWait(driver, 5).until(
     EC.element_to_be_clickable(
         (By.CSS_SELECTOR, "a.u_likeit_list_btn[data-type='like'][data-log='lik.llike|lik.lunlike']")))
         
driver.execute_script("arguments[0].scrollIntoView({block : 'center'});", like_btn)
like_btn.click()

 

지난 게시글과 마찬가지로 mainFrame으로 전환을 하고,

 

공감 버튼은 게시글 최하단에 있으므로, 스크롤을 가장 아래로 이동시킵니다. 

document.body.scrollHeight가 높이를 구하는 명령어이므로, 해당 위치로 옮긴다고 이해하시면 됩니다.

 

그리고 위에서 보신 a.u_likeit_list_btn을 셀렉하고, 이를 클릭하면 코드는 끝입니다.

 

마지막으로 아까 말한 on/off 체크하는 코드를 보겠습니다.

 

time.sleep(5)
btn_element = driver.find_elements(By.CSS_SELECTOR, "a.u_likeit_list_btn[data-type='like'][data-log='lik.llike|lik.lunlike']")[0]

class_attribute = btn_element.get_attribute('class')

if 'off' in class_attribute:
    print("off 클래스가 포함되어 있습니다. 새로운 게시글")
    like_btn = WebDriverWait(driver, 5).until(
        EC.element_to_be_clickable(btn_element))
    driver.execute_script("arguments[0].scrollIntoView({block : 'center'});", like_btn)
    like_btn.click()
else:
    print("off 클래스가 포함되어 있지 않습니다. 이미 체크한 게시글")

 

btn_element를 위에서 불러오고, 이를 가지고 off를 체크하여 공감 누르기 여부를 진행하는 간단한 코드입니다.

 

이 코드들을 사용하면, 간단하게는 공감 자동화부터 내가 이미 공감한 게시글은 패스하는 방식까지 자유롭게 사용 가능합니다.

 

그럼 오늘도 성공적으로 자동화를 마치고, 글은 여기서 마무리하겠습니다.

반응형