데이터 수집의 지옥, 인스타그램? 이 3가지 방법으로 뚫어버려!

인스타그램 크롤링 방법: 3가지 전략으로 데이터 수집하기

0. 인스타그램을 크롤링 하는 3가지 방법

인스타그램을 크롤링하는 데에는 다양한 방법이 존재합니다.
다음 사례들에 대한 코드는 루비로 이루어져 있습니다.
 
 

1. Public API를 이용한 방법

  • 액세스 토큰 발급: 개발자 계정 생성 및 앱 등록 후 인증을 받고 액세스 토큰을 발급받아야 합니다.
require 'net/http' require 'json' access_token = '발급받은 액세스 토큰' url = URI("https://graph.instagram.com/me?fields=id,username,followers_count&access_token=#{access_token}") response = Net::HTTP.get(url) data = JSON.parse(response) follower_count = data['followers_count'] puts "팔로워 수: #{follower_count}"
 
  • 장단점
    • 공식적인 api라 차단 되는 경우가 없습니다.
    • 개발자 계정과 액세스 토큰이 필요합니다.
    • 요청 수와 속도에 제약이 있습니다.
    • 개인정보 보호로 자신의 팔로워 수만 가져오고 다른 유저의 팔로우 수는 가져올수 없습니다.
 
 

2. 웹페이지를 이용한 방법

require 'nokogiri' require 'selenium-webdriver' driver = Selenium::WebDriver.for :chrome url = "https://www.instagram.com/suuu_yeony/" driver.get(url) doc = Nokogiri::HTML(driver.page_source) follower_count = doc.at('button:contains("팔로워")').text puts "#{follower_count}"
 
  • 장단점
    • 탐지되면 ip차단 혹은 아이디 차단을 당할 수 있습니다.
    • 다른 유저의 팔로워 수까지 함께 가져올 수도 있습니다.
    • 셀레니움의 특성상 안정성이 떨어질 수 있습니다.
 
 

3. Private Api를 이용한 방법

 
notion image
https://www.instagram.com/suuu_yeony/?__a=1&__d=dis (로그인이 필요할수 있음)
JSON 형태로 반환된 데이터 파싱 (첨부 이미지 참조)
  • 장단점
    • 다른 유저의 팔로워 수를 가져올 수도 있습니다.
    • 탐지되면 ip차단 혹은 아이디 차단을 당할수 있습니다.
    • 안정성 우수
 

4. 결론

위에 소개해 드린 방법 외에 크롤링 하는 방법은 여러가지가 존재하고 각 목적에 맞게 사용할수 있습니다.
인스타그램은 로그인을 하지 않으면 한페이지에 해당하는 데이터만 가져올수 있는 등
해시스크래퍼의 인스타그램 수집을 통해 로그인 없이 손쉽게 크롤링을 경험해 보시길 바랍니다.