본문 바로가기
프로젝트/인스타그램 좋아요 봇

파이썬 인스타그램 좋아요 봇 만들기 #3 태그검색

by 큰공 2020. 8. 31.
반응형

 

개요

 파이썬 자동화 프로그램을 만들어 자동으로 좋아요를 하는 봇을 만들어 보자

 혹시나 앞선 포스팅을 못 봤다면 복습하고 오자.

2020/08/26 - [IT/파이썬] - 파이썬 인스타그램 좋아요 봇 만들기 #1 Selenium

2020/08/27 - [IT/파이썬] - 파이썬 인스타그램 좋아요 봇 만들기 #2 로그인

 

목표

 파이썬 자동화 스크립트로 인스타그램 페이지를 띄우고 태그 검색까지 해보자

 

난관

 로그인을 했는데 두둥 처음 보는 화면은 로그인 기록 자동 저장 팝업? / 팝업을 누르고나니 알림 팝업이 두둥..

 매번 로그인하는것도 귀찮은데, 팝업까지 매번 닫아야 한다?? ㅠ_ㅠ

 

 

팝업 닫기 CODE

# 정보 저장 팝업 닫기
popup = browser.find_element_by_xpath('//*[@id="react-root"]/section/main/div/div/div/div/button')
popup.send_keys(Keys.ENTER)

time.sleep(2)

# 알림 설정 팝업 닫기
popup = browser.find_element_by_xpath('/html/body/div[4]/div/div/div/div[3]/button[2]')
popup.send_keys(Keys.ENTER)

 find_elemnet_by_xpath 라는 함수를 이용하여, not now 버튼의 위치를 찾고, 해당 위치에서 enter 를 눌러서 해당 팝업을 닫는 시나리오이다.

 xpath 는 개발자 도구에서 찾는 방법인데, 다음번에 상세하게 해당 위치를 찾는 방법을 강구해 보자

 

태그 검색 CODE

# 태그 검색 하기
search = browser.find_element_by_xpath('//*[@id="react-root"]/section/nav/div[2]/div/div/div[2]/input')
search.send_keys('#맛스타그램')

#time.sleep(2)

# 최상위 검색 결과로 진입하기 Enter 두번으로 수행 
search.send_keys(Keys.RETURN) #최상위 검색결과로 Focus 이동
search.send_keys(Keys.RETURN) #검색결과 새로운 창으로 이동

 

 태그명은 "맛스타그램" 으로 정하였다. 역시나 태그 검색 부분의 위치를 찾고, 해당 위치에 "#맛스타그램" 의 문자열을 보내준다음. 엔터를 두번 쳐서 태그 검색 화면으로 이동한다.

 엔터를 두번치는 이유는 한번은 태그 검색 목록에서의 최상단으로 이동하고, 한번은 새로운 창으로 이동하는 것이다.

 

 

다음엔 진짜 좋아요를 눌러보자!

 

팝업 닫기 XPATH 가 계속 변경되요.

 인스타그램 자동 좋아요 등에 대해서 어뷰징 처리가 되어서 있어서 그런지, 해당 부분이 좀 시시각각으로 바뀌는 부분이 확인되었습니다.

 이에 해당 부분에 대한 예외 처리 코드를 공유드립니다.

 

 XPATH 를 확인하기 위해서는 excpetion 이 발생하면 해당 부분에 대해서 일일히 찾아서 예외 처리 했었는데, 좀 더 효율적인 로직으로 할려면 좀 더 고민을 해봐야 할거 같습니다.

 

# 알림 설정 팝업 닫기
time.sleep(10)
try :
    popup = browser.find_element_by_xpath('/html/body/div[4]/div/div/div/div[3]/button[2]')
except :
    try : 
        popup = browser.find_element_by_xpath('html/body/div[3]/div/div/div/div[3]/button[2]')
    except : 
        try :
            popup = browser.find_element_by_xpath('/html/body/div[5]/div/div/div/div[3]/button[2]')
        except : 
            try :
                popup = browser.find_element_by_xpath('/html/body/div[6]/div/div/div/div[3]/button[2]')
            except : 
                try :
                    popup = browser.find_element_by_xpath('/html/body/div[7]/div/div/div/div[3]/button[2]')
                except :
                    popup = browser.find_element_by_xpath('/html/body/div[8]/div/div/div/div[3]/button[2]')
popup.send_keys(Keys.ENTER)

 

 

반응형

댓글6

  • 2021.10.05 18:12

    큰공님~~ 혹시
    # 알림 설정 팝업 닫기
    popup = browser.find_element_by_xpath('/html/body/div[4]/div/div/div/div[3]/button[2]')
    popup.send_keys(Keys.ENTER)

    이부분에서 저 div[4] <<-- 이번호가 로그인할때마다 계속 유동적으로 숫자가 바뀌더라구요 ㅎㅎ
    그래서 알림설정 팝업이 안닫아지고 진행이 더이상 안되더라구요ㅎㅎ
    로그인할때마다 설정을 다시 해야되는데 알림설정 팝업을 닫는 다른 효율적인 방법이 없을까요?
    답글

    • 큰공 2021.10.05 21:04 신고

      네,, 저도 고민했던 부분입니다.

      제가 사용하고 있는 최신 코드 위 게시물에 업데이트 하였습니다.

      도움 되시길 바랍니다.

  • 2021.10.05 22:30

    와우 !! 정말 감사합니다 ^^
    답글

  • vjsdw 2022.04.16 21:35

    이 부분에서 왜 맛스타그램까지만 입력이 되고 다음 화면으로 안 넘어갈까요 ㅠㅠ
    답글

  • 2022.06.21 16:01

    큰공님 안녕하세요 !오랜만입니당
    가끔 들어와서 조금이라도 도움이 되십사 광고 태그도 한번씩 눌러드리고있습니당 ㅎㅎ

    요즘 인스타에서는 매크로를 방지하려는 목적인지 xpath나 다른 html도 실시간으로 조금씩 변화를 주는것 같더라구요 ㅎㅎ 창과방패의 대결이네요 그런것들은 확인해서 수정해주고 있는데 요번에는 혼자서 해결이 불가능한 부분이 나왔습니당

    인스타 태그검색하는 인풋 xpath가 실시간으로 변경되더라구요
    //*[@id="mount_0_0_T9"]
    //*[@id="mount_0_0_pi"]
    //*[@id="mount_0_0_Tr"]
    이런식으로 계속 유동적으로 변경되던데 혹시 해결방법을 찾으셨나해서요 !

    예전에는 '//*[@id="react-root"]/section/nav/div[2]/div/div/div[2]/input' 요고였는데말이죠..
    저 id입력값이 계속 바뀌더라구용.. 시간되실때 부탁드리겠습니다

    항상 감사합니다(❁´◡`❁)
    답글

    • 큰공 2022.06.22 11:09 신고

      네 안녕하세요~

      현재 인스타 부분에 크게 관여치 않고 있어서 저도 유지보수가 어렵네요.

      제 최신 코드에는

      tag_search_list = [ '/html/body/div[1]/div/div/section/nav/div[2]/div/div/div[2]/input',
      '/html/body/div[1]/section/nav/div[2]/div/div/div[2]/input' ]

      browser.find_element_by_xpath(tag_search_list)

      로 되어 있네요.

      앞에 '//*[@id="react-root"]/ 부분은 제거해도 괜찮네요.

      도움되시길 바랍니다.