공부/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를 공부한다면 이게 훨씬 쉬울 것 같다.