본문 바로가기
Python

[파이썬/셀레니움] 인스타그램 봇 만들기 - 4일차 : 알고리즘 개선

by LasBe 2021. 4. 11.
반응형

[개발 일지]

2021.04.06 - [Language/Python] - [파이썬/셀레니움] 인스타그램 봇 만들기 - 1일차 : 셀레니움 설치 및 기초

2021.04.10 - [Language/Python] - [파이썬/셀레니움] 인스타그램 봇 만들기 - 2일차 : 알고리즘 구체화

2021.04.10 - [Language/Python] - [파이썬/셀레니움] 인스타그램 봇 만들기 - 3일차 : 코드 개선

2021.04.11 - [Language/Python] - [파이썬/셀레니움] 인스타그램 봇 만들기 - 4일차 : 알고리즘 개선

2021.04.13 - [Language/Python] - [파이썬/셀레니움] 인스타그램 봇 만들기 - 5일차 : Pyqt GUI, 패키징

[중요 기능]

2022.01.05 - [Language/Python] - [파이썬/셀레니움] 인스타그램 봇 만들기 - PyQT 리스트 추가, 삭제

 


많은 부분을 개선시켰다.

  • 코드 정리
  • 팔로워 대비 팔로잉이 많은 계정은 넘기기
  • 예외처리

함수화

지저분한 메인을 기능별로 함수처리 해서 깔끔하게 정리했다.

 

예외 처리

본문에 혹시나 모를 오류를 대비해 전체를 try로 잡고

오류 시 페이지 새로고침 후 해시태그 검색부터 반복문이 다시 돌아가게 했다.

 

팔로워 대비 팔로우 적은 계정 걸러내기

def follow_check(): #팔로우 팔로워 계산
    try:    #팔로우 수가 1000단위가 넘어가면 , 가 숫자 변환에 오류를 줘서 replace로 콤마 제거
        follower = float(driver.find_elements_by_class_name('g47SY')[1].text.replace(",", "")) 
        following = float(driver.find_elements_by_class_name('g47SY')[2].text.replace(",", ""))
        yangsim = following / follower          #팔로잉/팔로워 수치 계산
        print('팔로워 : ', follower,' ㅣ 팔로잉 : ', following,' ㅣ 양심수치 : ', yangsim)
        return yangsim
    except: #10000단위는 포기
        driver.back()
        driver.back()
        total += 1
        noyangsim += 1
        print('[대상의 팔로워 혹은 팔로잉 수가 너무 많습니다]')
        print('*** 성공 : ', total - noyangsim,' ㅣ 실패 : ', noyangsim, ' ㅣ ', total, ' 회 완료 ***')
        return 0
yangsim = follow_check()      #팔로우 계산
if yangsim == 0:
	continue

if yangsim < 0.8 :                      #노양심 뒤로가기 두번 해야됨
	print('[양심이 없습니다.]')
	noyangsim += 1
	total += 1
	print('*** 성공 : ', total - noyangsim,' ㅣ 실패 : ', noyangsim, ' ㅣ ', total, ' 회 완료 ***')
	driver.back()
	driver.back()
	time.sleep(random_time())
	continue

맞팔을 해야하는데 맞팔 해시태그를 사용한 사람 프로필에 들어가보면

팔로워 2000 팔로잉 100 이렇게 어쳐구니 없는 계정들이 수두룩했다.

팔로우 먹튀를 방지하기 위해 팔로잉/팔로워가 0.8이 넘지 않으면 자동으로 컷.

 

숫자를 불러올 때 1000 단위가 넘어가면 1,000 이라고 표시되어 숫자로 변환이 안되기 때문에

replace를 사용해 , 를 제거하고 변환이 되도록 했다.

그리고 10000단위가 넘어가면 '10천' 이런 식으로 표시가 되는데

팔로워가 많은 이런 사람들이 맞팔을 해줄리가 없기 때문에 그냥 넘어가도록 했다.

 

def 안에 continue는 전파가 안된다는걸 깨닫고 리턴값을 줘서

본문에서 0일 경우 반복문이 재시작 되게 했다.

 


개선한 버전은 차단당하지 않고 잘 돌아가지만

너무 많은 dm을 보내게 되어 dm 차단을 먹어버렸다ㅠㅠ

오류 잡는다고 하루종일 돌려서 그런것 같다.

 

이정도면 많은 개선을 이루어냈으니 PyQt를 배우면서 이 프로그램에 적용해 봐야겠다.

 

더보기

파이썬, 셀레니움, python, selenium, 인스타그램, 봇, 인스타그램 자동화, 인스타 봇, 인스타 자동화, 인스타 자동화 프로그램 만들기, 인스타 봇 만들기, 파이썬 gui, pyqt gui, 인스타그램 차단, 인스타 밴, 인스타 차단, 파이썬 패키징, 파이썬 exe

반응형

댓글


오픈 채팅