파이썬을 활용해 인스타그램 계정의 데이터를 가져옵니다.
원래 단순 팔로워, 좋아요 수 등 데이터는 로그인하지 않아도 가져올 수 있었지만, 인스타그램에서 현재 금지 중이기 때문에
"로그인 후" 크롤링에 대해 다뤄보도록 하겠습니다.
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 개발자 등록으로 쉽게 네이버 기반 크롤링 도전하기 (코드 수록)
네이버 API 개발자등록으로 쉽게 네이버 기반 크롤링 도전하기 (코드 수록)
편리한 크롤링을 위한 API 사용 이해하기. API의 개념도. API의 역할은? 1. API는 서버와 데이터베이스에 대한 출입구 역할을 한다. : 데이터베이스에는 소중한 정보들이 저장되는데요. 모든 사
mustzee.tistory.com
2022.07.08 - [파이썬 크롤링] - 파이썬 200제_코드 샘플 python_src200
파이썬 200제_코드샘플 python_src200
간단한 코드들이 들어 있는 모음집입니다. 기본적인 내용들이 들어있는 편이고, 주석이 달려있는 코드들을 보며 간단하게(?) 학습할 수 있습니다. Zip 파일에 py 확장자 파일이 잔뜩 들어가서 인
mustzee.tistory.com
배너 사용은 쿠팡파트너스 활동의 일환으로, 이에 따른 소정의 수수료를 제공받습니다.
'파이썬 크롤링' 카테고리의 다른 글
Mac 맥에서 파이썬 파일 자동화 크론탭 (0) | 2022.08.17 |
---|---|
파이썬 200제_코드샘플 python_src200 (2) | 2022.07.08 |
네이버 API 개발자등록으로 쉽게 네이버 기반 크롤링 도전하기 (코드 수록) (0) | 2022.06.21 |
댓글