지난 시간에는 처음 페이지를 띄우고 로그인을 해보았습니다.
이번에는 좋아요를 해볼게요.
사람이 정성껏 팔로워를 늘리는 것과 자동봇을 이용해 팔로워를 늘리는 것,
두 방법 중 어떤 경우가 팔로워가 더 빨리 증가할 것인지 궁금해집니다.
계정 새로 파서 피드 좀 올리고 테스팅 예정입니다 ^^
각설하고 오늘 내용 진행하겠습니다.
지난 내용 참고는 아래 글에서 확인하실 수 있습니다.
2022.08.02 - [IT/python 응용] - [파이썬 코딩] 인스타 팔로워 늘리기 프로그램 무료 #2. 로그인 및 페이지 접속
[파이썬 코딩] 인스타 팔로워 늘리기 프로그램 무료 #2. 로그인 및 페이지 접속
오늘은 로직을 구현해보겠습니다. 지난 포스팅에는 전체적인 프로그램 설계 개요에 대해서 포스팅했는데 혹시 궁금하신 분은 아래 지난 내용을 참고해주시길 부탁드립니다. 2022.08.01 - [IT/python
waytofreedom.co.kr
지난 시간에 했던 것처럼 코드를 입력하고 실행을 하면
파이썬 코드가 스스로 id, pw 로그인 하고 나면 일단 아래와 같은 페이지가 나타날 것입니다.
페이지가 위처럼 로딩되었다면 그 이후 작업은 순차적으로
① 해시 태그를 검색한 뒤 enter를 눌러준다.
② 검색 결과 화면이 나오면 최근 게시물 (PC 버전은 최근사진) 기준으로 첫 사진을 클릭한다.
③ 클릭한 사진에 좋아요를 한다.
조건 1. 좋아요가 클릭 되어있지 않은 상태에서만 좋아요를 클릭한다.
오늘은 위 3가지를 다뤄보겠습니다.
① 해시 태그를 검색한 뒤에 ENTER를 눌러준다.
첫번째 방법은 수동적으로 접근하는 방법입니다.
아래 코드를 보면서 하나씩 살펴보죠.
#첫번째 방법 - 검색창의 xpath에 직접 keyword를 입력해주고 ActionChains으로 엔터를 눌러준다.
keyword = "#운동맞팔"
driver.find_element_by_xpath("""//*[@id="react-root"]/section/nav/div[2]/div/div/div[2]/input""").send_keys(keyword)
#검색창의 xpath에 위 keyword 변수값을 보내준다.
time.sleep(3)
#3초 대기해 준다.
ActionChains(driver).key_down(Keys.ARROW_DOWN).perform() #방향키 아래쪽을 눌러준다.
time.sleep(3)
#3초 대기해 준다.
ActionChains(driver).key_down(Keys.ENTER).key_up(Keys.ENTER).perform()
#Enter를 눌러준다.
두번째 방법은 페이지 자체를 로딩시키는 것입니다.
keyword = "운동맞팔"
driver.get('https://www.instagram.com/explore/tags/%s'%keyword)
두번째 방법이 더 깔끔하지만 직관적으로 움직이는 것을 확인해보고 연습하기에는 첫번째 방법이 나은것 같습니다.
둘다 확인해보시고 적용해보세요 !
② 검색 결과 화면이 나오면 최근 게시물 (PC 버전은 최근사진)
기준으로 첫 사진을 클릭한다.
우리가 잘 알고 있듯이 웹은 요소들로 구성되어 있습니다.
다시 말해 사진 또한 어떤 웹의 언어 요소로 만들어진 것입니다.
어떻게 만들어진지 확인하려면 Ctrl + Shift + i를 눌러 확인해볼 수 있습니다.
클래스 명을 확인하고 해당 클래스를 뒤져봅니다. 사진들이 전부 _aagw로 이므로 최근사진에 첫번째를 클릭하기 위해
우린 9번째 _aagw를 클릭할 것입니다.
#팔로우할 확률을 높이기 위해서 모바일 기준은 최근게시물, pc 기준은 최근사진으로 소팅한다.
time.sleep(5)
#5초 정지한다.
target_picture = driver.find_elements_by_class_name('_aagw')
target_picture[9].click()
#리스트에 전부 담아 놓고 9번째 클래스 요소를 클릭해라.
time.sleep(5)
#5초 정지한다.
그럼 첫번째 최근게시물에 첫번째 사진이 클릭되겠죠?
최근게시물의 두번째 사진을 클릭하려면 ? target_picture 이라는 _aagw를 요소들을 저장해 놓은 리스트의 10번째를 호출하면 될 것입니다.
③ 클릭한 사진에 좋아요를 한다.
조건 1. 좋아요가 클릭 되어있지 않은 상태에서만 좋아요를 클릭한다.
이제 좋아요를 클릭해야합니다.
좋아요를 클릭하는건 어렵지 않습니다만 이미 좋아요를 누른상태라면 취소하면 안되겠죠?
로직상 좋아요를 다시 누르면 취소가 되기 때문에 해당 요소에 대한 상태를 점검합니다.
for i in range(0,7):
# 동일 작업 7회 반복
time.sleep(random.randint(5,8))
likes = driver.find_elements_by_class_name("_ab6-")
#좋아요 요소의 클래스 이름은 _ab6- 이고
#해당 요소를 전부 likes라는 변수에 담는다.
likes_number_list = []
likedo = 0
for j in range(0,len(likes)):
#-ab6_의 길이만큼 반복문을 실행한다.
if likes[j].get_attribute("aria-label") == "좋아요":
#순회하면서 해당요소의 속성 "aria-label"의 상태가 좋아요인지 확인한다.
#만약 좋아요인 상태면 likedo라는 변수를 True라고 변경하고 해당 요소의 위치를
#리스트에 추가한다.
likes_number_list.append(j)
likedo = True
elif likes[j].get_attribute("aria-label") == "좋아요 취소":
#반대의 경우를 처리한다.
likedo=False
break
if likedo == True:
likes_number = int(likes_number_list[1])
likes[likes_number].click()
print("clicked likes")
else:
print("you are already clicked likes")
time.sleep(3)
try:
# ▶ 를 눌러 다음 사진으로 넘어간다.
driver.find_element_by_xpath("""/html/body/div[1]/div/div/div/div[2]/div/div/div[1]/div/div[3]/div/div/div/div/div[1]/div/div/div[2]/button""").click()
except:
driver.find_element_by_xpath("""/html/body/div[1]/div/div/div/div[2]/div/div/div[1]/div/div[3]/div/div/div/div/div[1]/div/div/div/button""").click()
time.sleep(5)
print("끝")
위에서 사진요소를 선택한 것처럼 ♡ (likes)와 동일한 클래스 명으로 존재하는 요소가 많아서 세부접근하여
내부 속성값이 "좋아요" 인지 확인하여 해당 요소의 위치를 검색하는 방법으로 좋아요를 클릭하게 해보았습니다.
상세내용은 주석참고해주시면 좋을 것 같아요 !
다음 포스팅에는
이후 작업으로 팔로우 여부에 따라 팔로잉을 하고
미팔로잉의 경우 계정을 타고 들어가 여러사진에 좋아요를 해주고
댓글작업을 하는 로직에 대해 남겨보겠습니다.
도움이 되셨으면 좋겠습니다 ^^
'IT > python 응용' 카테고리의 다른 글
[파이썬 코딩] 인스타 팔로워 늘리기 프로그램 무료 #4. 조건에 따라 팔로우 하기 , 댓글 남기기 (0) | 2022.08.08 |
---|---|
[파이썬 코딩] 인스타 팔로워 늘리기 프로그램 무료 #2. 로그인 및 페이지 접속 (0) | 2022.08.02 |
인스타 팔로워 천명 만들기 프로그램#1. 개요 및 로직 요약 (0) | 2022.08.01 |
파이썬 gui #3 - Qt 디자이너 기초 사용 (pyqt5) 2편 동작 연결하기(Signals/Slots) (0) | 2022.06.03 |
파이썬 gui #2 - Qt 디자이너 기초 사용 (pyqt5) 1편 layout 잡아보기 (0) | 2022.06.03 |
댓글