파이썬을 활용해 인스타그램 계정의 데이터를 가져옵니다.
원래 단순 팔로워, 좋아요 수 등 데이터는 로그인하지 않아도 가져올 수 있었지만, 인스타그램에서 현재 금지 중이기 때문에
"로그인 후" 크롤링에 대해 다뤄보도록 하겠습니다.
3계정 이상 크롤링을 하시려는 분들은 꼭 새로운 계정을 만들어서 진행하시기 바랍니다. 활동 없는 인스타그램 계정 등의 의미 없는 반복 방문 또한 차단 사유가 있기 때문에~!!
이번 예제도 파이참(pycharm) + 파이썬 3.8 버전을 사용하였습니다.
가장 쉬운 방법. 라이브러리 활용하기 (비로그인 방문 OK)
instaloader라는 라이브러리를 활용해서 진행할 수 있습니다.
pip install instaloader
코드 설명 _확인 (22.7.24)
import instaloader
#인스타로더 사용 시작.
bot = instaloader.Instaloader()
#사용자 이름 정의 직접 기입해도 상관없습니다.
Username = input('Enter the Account Username: ')
#프로필을 정의합니다.
profile = instaloader.Profile.from_username(bot.context, Username)
print("Username: ", profile.username)
print("User ID: ", profile.userid)
print("Number of Posts: ", profile.mediacount)
print("Followers: ", profile.followers)
print("Followees: ", profile.followees)
print("Bio: ", profile.biography, profile.external_url)
출력 기대값
배너 사용은 쿠팡파트너스 활동의 일환으로, 이에 따른 소정의 수수료를 제공받습니다.
셀레늄 활용하기 (로그인) _ 코드 확인(22.7.24)
저는 일단 파이어폭스 브라우저를 활용했습니다. 구글 크롬 브라우저 버전을 일일이 확인하면서 진행하기가 귀찮기 때문에....
import random
import pandas as pd
from selenium import webdriver
import time
#인스타그램 계정 제어 공간입니다 아래 3곳 필드를 수정해서 사용해주세요.
id = '로그인 아이디'
password = '로그인 비밀번호'
name_list=['officialfromis_9','jiheonnibaek','k_a_z_u_h_a__']
print('browser loading..')
browser = webdriver.Firefox(executable_path='/Users/irix/PycharmProjects/a/geckodriver')
browser.delete_all_cookies()
time.sleep(5)
#인스타그램 로그인 필드
browser.get('https://www.instagram.com')
time.sleep(3.5)
username_input = browser.find_elements_by_css_selector('input._2hvTZ')[0]
username_input.send_keys(id)
time.sleep(2 + random.random() * 0.3)
password_input = browser.find_elements_by_css_selector('input._2hvTZ')[1]
password_input.send_keys(password)
time.sleep(1)
password_input.submit()
time.sleep(2)
print("login success")
#브라우저 로드까지 대기.
browser.implicitly_wait(4)
time.sleep(10)
#인스타그램 네임리스트를 통해 게시물 수, 팔로워 수, 팔로우 수를 추적합니다.
for namer in name_list:
browser.get('https://www.instagram.com/'+namer+'/?hl=ko')
time.sleep(1)
#게시물 수
mediacount = browser.find_element_by_xpath('/html/body/div[1]/div/div/div/div[1]/div/div/div/div[1]/div[1]/section/main/div/header/section/ul/li[1]').text
#팔로워 수
followers = browser.find_element_by_xpath('/html/body/div[1]/div/div/div/div[1]/div/div/div/div[1]/div[1]/section/main/div/header/section/ul/li[2]/a/div/span').text
#팔로우 수
followees = browser.find_element_by_xpath('/html/body/div[1]/div/div/div/div[1]/div/div/div/div[1]/div[1]/section/main/div/header/section/ul/li[3]/a/div/span').text
print(mediacount)
print(followers)
print(followees)
수집 원리?
Full Xpath를 가져와서 표기하였습니다. 좀 더 복잡한 방법을 쓴다면, 인스타그램의 graphql에 접근해서 shorcod라는 친구를 만져야 하지만 간단한 크롤링을 하고 싶다면 기피되는 게 사실이죠~
아마 2020년~21년 초까지는 script 내의 shared data에서 쉽게 추려왔던 거 같은데 현재는 기존 방식으로는 크롤링이 되지 않습니다 :)
만약 저 코드에서 사용자의 아이디도 가져오고 싶다면 어떻게 해야 할까요?
브라우저의 CSS 인스펙터 도구를 활용해서 Full Xpath를 가져오면 됩니다.
브라우저의 검사 기능을 활용해서 찾고자 하는 요소의 위치를 찾아내 준 뒤
다음과 같이 Full Xpath를 받아옵니다.
아이디의 경우에는
/html/body/div[1]/div/div/div/div[1]/div/div/div/div[1]/div[1]/section/main/div/header/section/div[1]/h2
를 활용하면 되겠습니다.
사실 제대로 활용하기 위해서는 판다스 등을 활용해서 csv로 저장해주거나 저장 값을 스프레드시트 등 활용 가능한 툴에 넣어놓고 쓰는 게 가장 좋습니다.
해당 코드까지 넣을 경우 이해가 어려우실 것 같아 해당 기능은 다음 글에 게재해드리도록 하겠습니다.
함께 보면 좋을 시리즈
2022.06.21 - [파이썬 크롤링] - 네이버 API 개발자 등록으로 쉽게 네이버 기반 크롤링 도전하기 (코드 수록)
2022.07.08 - [파이썬 크롤링] - 파이썬 200제_코드 샘플 python_src200
배너 사용은 쿠팡파트너스 활동의 일환으로, 이에 따른 소정의 수수료를 제공받습니다.
'파이썬 크롤링' 카테고리의 다른 글
Mac 맥에서 파이썬 파일 자동화 크론탭 (0) | 2022.08.17 |
---|---|
파이썬 200제_코드샘플 python_src200 (2) | 2022.07.08 |
네이버 API 개발자등록으로 쉽게 네이버 기반 크롤링 도전하기 (코드 수록) (0) | 2022.06.21 |
댓글