(업무자동화)Python+Selenium 인스타그램 봇 만들기

이상우·2022년 5월 3일
0
post-thumbnail

#Chromedriver 다운.

사용하고 있는 chrome 버전과 같은 버전으로 다운로드 해야한다.
python 소스를 담을 폴더 하나를 생성하고,
그 폴더 안에 chromedriver을 넣어둔다.


#Selenium 설치 .

터미널에

pip install selenium

입력 후 enter


#코드 기본 세팅.

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time

driver = webdriver.Chrome('chromedriver.exe')


#페이지 이동.

driver.get('http://instagram.com')

URL로 이동한다.


#원하는 키 입력시키기 .

#어디에 입력할지 찾기.
e = driver.find_elements_by_class_name('_2hvTZ')[0] #아이디 입력 란

개발자 도구를 열어 class name을 확인하자.
[0]은 class name이 중복되는 것들이 있어,
그 중에서 0번째 인덱스에 해당하는 class name을 가진 녀석을 나타낸다.

#입력시키기.
e.send_keys('nicemg2@naver.com')

값을 입력시킨다.


#엔터키 입력하는 법.

e.send_keys(Keys.ENTER)

다른 키보드 키도 가능하다.


#어떤 요소를 클릭하는 법.

e.click()

#팁(1) - 페이지 이동시 로딩 자주 해주자.

time.sleep(4)
 	

4초 동안 로딩을 준다.


#팁(2) - 클래스 명이 없으면 아이디로 찾자.

find_elements_by_css_selector('#id명')

#팁(3) - 코드를 두 번 반복하자.

 e = driver.find_elements_by_class_name('PUqUI')[0]  #댓글창 클릭
    e.click()
    e = driver.find_elements_by_class_name('PUqUI')[0]  #댓글창 클릭
    e.click()

가끔가다 html자체가 계속해서 변하기 때문에
코드가 제대로 실행이 안될 때가 있다.
그럴 때는 같은 코드를 2번 반복해 주자.


#전체 코드 ( 주호민 작가 인스타 게시물(10개) '엄준식' 자동 달기)

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time

driver = webdriver.Chrome('chromedriver.exe')

#페이지 이동
driver.get('http://instagram.com')

#(팁)페이지 이동시 로딩 자주 해주자.
time.sleep(4)

#원하는 키 입력시키기 
#-어디에 입력할지 찾기
e = driver.find_elements_by_class_name('_2hvTZ')[0] #아이디 입력 란
#-입력시키기
e.send_keys('nicemg2@naver.com')

#-어디에 입력할지 찾기
e = driver.find_elements_by_class_name('_2hvTZ')[1] #비번 입력 란
#-입력시키기
e.send_keys('430910Dick@')
#엔터키 입력하는 법
e.send_keys(Keys.ENTER)

#(팁)페이지 이동시 로딩 자주 해주자.
time.sleep(4)

#어떤 요소를 클릭하는 법
#-아까처럼 원하는 요소 찾고 - e.click()
e = driver.find_elements_by_class_name('sqdOP')[1] #'로그인 정보를 저장하시겠습니까?' 나중에 하기 클릭
e.click()

#(팁)페이지 이동시 로딩 자주 해주자.
time.sleep(4)

e = driver.find_elements_by_class_name('HoLwm')[0] #'로그인 정보를 저장하시겠습니까?' 나중에 하기 클릭
e.click()




#(팁) 클래스 명이 없으면 아이디로 찾자.  find_elements_by_css_selector('#id명')


#(팁)페이지 이동시 로딩 자주 해주자.
time.sleep(4)


#페이지 이동(주호민)
driver.get('https://www.instagram.com/homin_joo/')
#-어디에 입력할지 찾기
e = driver.find_elements_by_class_name('_9AhH0')[1]  #두 번째 게시물 
e.click()



for i in range(10):
    time.sleep(4)
    
    #(팁)페이지 이동시 로딩 자주 해주자.
    time.sleep(4)
    e = driver.find_elements_by_class_name('PUqUI')[0]  #댓글창 클릭
    e.click()
    e = driver.find_elements_by_class_name('PUqUI')[0]  #댓글창 클릭
    e.click()
    e.send_keys('엄준식')
    e.send_keys(Keys.ENTER)

    time.sleep(4)
    e = driver.find_elements_by_class_name('wpO6b')[4]  #다음 게시물로 넘어가는 버튼 클릭
    e.click()
    #e = driver.find_elements_by_class_name('wpO6b')[4]  #다음 게시물로 넘어가는 버튼 클릭
    #e.click()





profile
Flutter App Developer

0개의 댓글