본문 바로가기

개발자 이야기

Python 크롤링을 이용한 인스타그램 게시글의 좋아요 누른 유명인 추출하기

728x90

최근 마미손이 본인 유튜브를 통해
그동안 있었던 노예계약 의혹에 대해 해명했다.

영상 내용은 염따의 본인 디스에 대한 해명과 추가적인 폭로였다.
좁아터진 국내 힙합씬의 인맥왕인 염따의 대한 저격으로
힙합씬은 또다시 불타고 있다.

이에 래퍼들은 각자 지지하는 래퍼에게 좋아요를 누름으로써 
본인의 존재감을 드러내고 있다.

이들의 좋아요를 통해 우리는
힙합씬의 껄끄러운 관계와 현재 상황에 대해
래퍼들이 어떤 스탠스를 취하고 있는지
대략적으로나마 유추할 수 있을 것이다.

알다시피 인스타의 댓글, 팔로우 목록의 최상단에는
내가 팔로우한 사람이 올라오도록 되어있다.

그래서 네티즌들은 관심있는 래퍼를 팔로우 해두었다가
실시간으로 좋아요를 눌렀는지 확인해보거나
의심가는 래퍼를 검색하는 방법으로 좋아요 누른 사람을 찾고있다.

하지만 우리가 하루종일 힙합만 볼것도 아니고
굳이 래퍼 이놈저놈들을 팔로우 할 필요는 없다.

걍 유명인 중 누가 팔로우 했는지만 찾아보면 된다.
python과 selenium을 통해서.

방법은 이렇다.

컴퓨터한테 래퍼들의 전쟁터인 '특정 게시물'에 팔로우 누른 모든 사람을 찾아보도록 명령한다.
그중에 '인증된' 사용자만 필터링한다.

결과를 확인한다.

프로그램은 매우 단순하다.
인스타 링크를 열고
모바일 기기로 에뮬레이터를 변경한다.
(웹에서 요청 시 요청 횟수의 제한이 존재한다. 이를 우회하기 위한 편법)

게시글의 좋아요를 클릭하고
랜덤으로 1~2초마다 한번씩 스크롤을 내린다.
이 작업을 댓글 갯수만큼 반복한다.

그리고 콘솔창을 열어
인증된 사용자의 인스타 아이디를 확인해본다.

from selenium import webdriver
from selenium.webdriver.common.by import By 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 
from selenium.webdriver.common.keys import Keys

import time 
import random
import pandas as pd

chromedriver = "C:\chromeweb\chromedriver.exe"

options = webdriver.ChromeOptions()
mobile_emulation = {"deviceName": "iPhone X"}
options.add_experimental_option("mobileEmulation", mobile_emulation)
options.add_experimental_option("excludeSwitches", ["enable-logging"])
options.add_argument('--user-data-dir=C:\chromeweb')
driver = webdriver.Chrome(chromedriver,options=options)

login_option="instagram" # facebook or instagram 

# login_url = "https://www.instagram.com/p/CVxdzJbvevj/" #마미손1
# login_url = "https://www.instagram.com/p/CVwwgKov5LU/" #마미손2
# login_url = "https://www.instagram.com/p/CVtfaWfBpvW/" #마미손3

login_url = "https://www.instagram.com/p/CVusCmzPNlr/" #염따

driver.get(login_url) 
time.sleep(3)

print(login_option)

if login_option == "instagram": 
    try: 
        follow_button = driver.find_element_by_xpath('//*[@id="react-root"]/section/main/div/div/article/div/div[3]/div/div/section[2]/div/div/a') 
        count = int(follow_button.text[4:-1].replace(",",""))
        follow_button.click();

        for j in range(count):
            time.sleep(random.randint(3,5))
            driver.find_element_by_tag_name('body').send_keys(Keys.END)
    except: 
        print("instagram login fail")

이것이 소스코드이다.

 

 

 

 


그렇게 해서 나온 결과

 

jason_andup
sleepycamo
superstarjimmyfuckedup
dhack_090sama
pure.ddd
losmoonwalker
2tnnd
yunbnotlilb
realpeakboy
wutan_vmc
artistboy_
hyundolee_
masanhardcore
mmmovie_
jiwonstein
eanakim
jeezepizza
goldgordo83
minoschoi
bizzionary
sionjung
vibe.official.kr
chaboombox
king_ydg
feat.juvietrain
bigrhymer
lugoh.of.adv
huckleberryp84
officialskull




염따의 게시글에 좋아요를 누른 사람
djkentaro_official
realisshoman
woogie_park
koonta1234
meloh8_26
rohannlxiv
iamtouchthesky
yumdda
h3hyeon
shini.park
blacknine.choe
deepshower
toil1204
skinnybrownn


 

 

이렇게 나온다.

 

여론과 반대로 마미손이 염따한테 막고라를 걸었다고 딱히 래퍼들한테 손절당하거나 하지는 않았다.

 

그 외에도 뭐 잡다한 결과를 얻을 수 있었는데

 

 

 

이것이다.

 

이 프로그램은 나중에 다른 이슈가 생겼을때 또 써먹을 수 있을 것 같다.

 

 

728x90