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

파이썬 인스타그램 좋아요 봇 만들기 #7 list index out of range

by 큰공 2020. 9. 14.
728x90
반응형

개요

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

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

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

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

2020/08/31 - [IT/파이썬] - 파이썬 인스타그램 좋아요 봇 만들기 #3 태그검색

2020/09/02 - [IT/파이썬] - 파이썬 인스타그램 좋아요 봇 만들기 #4 좋아요 누르기

2020/09/07 - [IT/파이썬] - 파이썬 인스타그램 좋아요 봇 만들기 #5 최근 게시물 선택하기

2020/09/08 - [IT/파이썬] - 파이썬 인스타그램 좋아요 봇 만들기 #6 랜덤함수

 

목표

 파이썬 자동화 봇 동작시 가끔 발생하는 list index out of range 를 잡아 보자

 

 

에러

 like_list[0].click() #list 중 0번째 버튼을 선택
IndexError: list index out of range

 실행 시 이런 에러가 발생한다.

 like_list[0] 이 없다는 얘기 이고, like_list가 null 일 가능성이 크다.

 좋아요를 누르면서 다음게시물으로 이동하면서, 가끔식 다음게시물이 인터넷 환경이든, 인스타그램 버그인든 아니면 자동화를 막아 볼려는 인스타그램의 꼼수이든. "다음 게시물이 안뜨는 경우가 발생한다."

 다음 게시물이 뜨지 않으면, like_list 를 xpath로 얻어 올 수 없으므로, 이에 like_list 리스트의 0번째 값을 얻을 수 없어어 에러가 발생하는 것이다.

 리스트 인덱스 에러는 어떤 언어에서도 발생하는 현상이다.

 

try - except

try:
    실행할 코드
    
except:
    예외가 발생했을 때 처리하는 코드
    
    
try:
    실행할 코드
    
except 예외이름:
    예외가 발생했을 때 처리하는 코드

 java 의 Try - catch 와 동일하다고 보면 된다. 예외 이름으로 그 해당 예외만 처리 할 수 있지만, 아무것도 적지 않았을 경우에는 모든 예외를 처리 한다.

 index error 또한 이 except 를 통해서 해결 해보자.

 except IndexError: 를 통해서 예외이름을 지정할 수도 있다.

 

 

수정

    try:
        like_list = browser.find_elements_by_xpath('//article//section/span/button')
        like_list[0].click() #list 중 0번째 버튼을 선택
    except :
        print ("exception!")
    
    # 다음 피드로 이동하기
    for b in range(randint(random_next_min,random_next_max)):
        nextFeed()

 like_list[0]에서 에러가 발생하였기 때문에, except 으로 이동하게 되고, exception 을 출력하고 다음으로 이동하여, 다음 게시물을 선택하도록 하는 구문을 추가하였다.

 

총평

약 좋아요 300개 정도 수행하면 1개 정도씩은 exception이 출력된다. 기존 코드에는 excpetion이 한번이라도 발생하면 이후 좋아요가 눌러지지 않고 Crash가 발생하여 종료 되었다면, 해당 예외 처리를 통해서 다음게시물로 이동하고 이후 좋아요 동작을 연속적으로 할 수 가 있다.

 

728x90
반응형

댓글