공부/PYTHON

python 인스타그램 좋아요 누르기

_마디 2020. 10. 1. 18:08
반응형

인스타그램 좋아요 누르기

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
from myid import ID, PW
import time


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

try:
    driver.get('https://www.instagram.com/')

    elem = driver.find_element_by_link_text('로그인')
    elem.click()

    time.sleep(2)

    elem = driver.find_element_by_name('username')
    elem.send_keys(ID)
    elem = driver.find_element_by_name('password')
    elem.send_keys(PW)
    elem.send_keys(Keys.RETURN)

    time.sleep(2)

    elem = driver.find_elements_by_class_name('eyXLr') #검색창 class의 div 태그
    ac = ActionChains(driver)
    ac.move_to_element(elem)
    ac.click()
    ac.key_down('#인스타그램')
    ac.perform() #등록한 함수를 실행하는 함수

    time.sleep(2)

    ac.reset_actions() #앞의 동작들 초기화
    ac.move_by_offset(0, 50) #클릭할 x좌표, y좌표
    ac.click()
    ac.perform()

    time.sleep(2)

    elem = driver.find_element_by_class_name('EZdmt')
    divs = elem.find_elements_by_class_name('v1Nh3')

    for div in divs:
        ac.reset_actions()
        ac.move_to_element(div)
        ac.click()
        ac.perform()
        
        time.sleep(1)
        
        try:
            ac.reset_actions()
            elem = driver.find_element_by_class_name('fr66n')
            ac.move_to_element(elem)
            ac.click()
            ac.perform()
        except:
            print('이미 좋아요를 누른 게시물입니다')

        ac.reset_actions()
        ac.send_keys(Keys.ESCAPE)
        ac.perform()

        time.sleep(1)




    input()
except Exception as e:
    print(e)
finally:
    driver.quit()

 

라는데 개발환경이 바뀌어서 안먹는다...

수정을 해야하는데 실력 부족으로 포기

 

 

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
from myid import ID, PW
import time


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

try:
    driver.get('https://www.instagram.com/')

    elem = driver.find_element_by_link_text('로그인')
    elem.click()

    time.sleep(2)

    elem = driver.find_element_by_name('username')
    elem.send_keys(ID)
    elem = driver.find_element_by_name('password')
    elem.send_keys(PW)
    elem.send_keys(Keys.RETURN)

    time.sleep(2)

    elem = driver.find_elenment_by_xpath("//span[text()='검색']/..")
    ac = ActionChains(driver)
    ac.move_to_element(elem)
    ac.click()
    ac.key_down('#게시물검색')
    ac.perform() #등록한 함수를 실행하는 함수

    time.sleep(2)

    ac.reset_actions() #앞의 동작들 초기화
    ac.move_by_offset(0, 50) #클릭할 x좌표, y좌표
    ac.click()
    ac.perform()

    time.sleep(2)

    divs = elem.find_elements_by_xpath("//*[text()='인기 게시물']/../..//a[contains(@href, '/p/')]")
    ac = ActionChains(driver)

    for div in divs:
        ac.reset_actions()
        ac.move_to_element(div)
        ac.click()
        ac.perform()
        
        time.sleep(1)
        
        try:
            ac.reset_actions()
            elem = driver.find_element_by_xpath("//*[@aria-label='좋아요']")
            ac.move_to_element(elem)
            ac.click()
            ac.perform()
        except:
            print('이미 좋아요를 누른 게시물입니다')

        ac.reset_actions()
        ac.send_keys(Keys.ESCAPE)
        ac.perform()

        time.sleep(1)




    input()
except Exception as e:
    print(e)
finally:
    driver.quit()

 

이건 Xpath를 이용한 코드.

xpath를 공부한다면 이게 훨씬 쉬울 것 같다.

 

반응형