[Python] instaloader 라이브러리

2023. 5. 8. 17:06·Development/Python

instaloader 설치

pip install instaloader

예제 코드1

import instaloader

# 인스타그램 로그인 정보 입력
ig_username = '인스타그램ID'
ig_password = '인스타그램PW'

L = instaloader.Instaloader()

try:
    # 인스타그램 로그인
    L.context.log("인스타그램 로그인 중...")
    L.load_session_from_file(ig_username)
    if not L.context.is_logged_in:
        raise Exception("로그인 실패")
    L.context.log("로그인 성공")

except Exception as e:
    L.context.log("로그인 실패")
    L.context.log(str(e))
    L.context.log("새로운 세션 생성 후 로그인 시도...")
    L.context.log("로그인 정보를 저장하지 않습니다.")
    L.interactive_login(username=ig_username)
    L.context.log("로그인 성공")

    # 세션 저장
    L.context.log("세션 저장 중...")
    L.save_session_to_file()

# 검색할 해시태그 입력
hashtag = '해시태그'

# 해시태그 게시물 정보 수집
L.context.log(f"#{hashtag} 해시태그 게시물 수집 시작")
for post in instaloader.Hashtag.from_name(L.context, hashtag).get_posts():
    # 게시물 정보 출력
    print("게시물 정보")
    print(f"작성자: {post.owner_username}")
    print(f"게시일: {post.date_local}")
    print(f"좋아요 수: {post.likes}")
    print(f"댓글 수: {post.comments}")
    print(f"해시태그: {post.caption_hashtags}")
    print(f"게시물 링크: https://www.instagram.com/p/{post.shortcode}/")

    # 게시물 이미지 다운로드
    L.context.log("게시물 이미지 다운로드 중...")
    L.download_post(post, '#'+hashtag)

L.context.log(f"#{hashtag} 해시태그 게시물 수집 완료")

로그인하려면 패스워드를 입력해줘야해서 다른 방법을 찾아보았다.

기존 : PW를 입력해줘야함.

Enter Instagram password for 인스타그램ID:
로그인 성공
세션 저장 중...

변경된 코드는 아래

예제 코드2

import os
import instaloader

# 인스타그램 로그인 정보를 시스템 환경 변수로 설정
os.environ["IG_USERNAME"] = "인스타그램ID"
os.environ["IG_PASSWORD"] = "인스타그램PW"

# 시스템 환경 변수에서 인스타그램 로그인 정보 읽어오기
ig_username = os.environ.get("IG_USERNAME")
ig_password = os.environ.get("IG_PASSWORD")

# 인스타그램 로그인
L = instaloader.Instaloader()
try:
    L.context.log("인스타그램 로그인 중...")
    L.load_session_from_file(ig_username)
    if not L.context.is_logged_in:
        raise Exception("로그인 실패")
    L.context.log("로그인 성공")
except Exception as e:
    L.context.log("로그인 실패")
    L.context.log(str(e))
    L.context.log("새로운 세션 생성 후 로그인 시도...")
    L.context.log("로그인 정보를 저장하지 않습니다.")
    L.interactive_login(username=ig_username)
    L.context.log("로그인 성공")
    L.context.log("세션 저장 중...")
    L.save_session_to_file()

# 해시태그 게시물 정보 수집
L.context.log(f"#{hashtag} 해시태그 게시물 수집 시작")
for post in instaloader.Hashtag.from_name(L.context, hashtag).get_posts():
    # 게시물 정보 출력
    print("게시물 정보")
    print(f"작성자: {post.owner_username}")
    print(f"게시일: {post.date_local}")
    print(f"좋아요 수: {post.likes}")
    print(f"댓글 수: {post.comments}")
    print(f"해시태그: {post.caption_hashtags}")
    print(f"게시물 링크: https://www.instagram.com/p/{post.shortcode}/")

    # 게시물 이미지 다운로드
    L.context.log("게시물 이미지 다운로드 중...")
    L.download_post(post, '#'+hashtag)

L.context.log(f"#{hashtag} 해시태그 게시물 수집 완료")

 

json파일, 이미지(JPG), 텍스트(본문) 내용들이 각각의 파일로 저장된다.

추출된 데이터

 

'Development > Python' 카테고리의 다른 글

[Python] base64 디코드  (0) 2023.05.23
[Python] logging 모듈  (0) 2023.05.17
[MySQL] 주별로 쿼리 조회  (0) 2023.04.12
[Python] lxml 설치  (0) 2023.03.06
[Python] replace가 안될 때  (0) 2023.03.02
'Development/Python' 카테고리의 다른 글
  • [Python] base64 디코드
  • [Python] logging 모듈
  • [MySQL] 주별로 쿼리 조회
  • [Python] lxml 설치
곽진돔
곽진돔
Developer
  • 곽진돔
    echo "곽박한 세상";
    곽진돔
  • 전체
    오늘
    어제
    • 분류 전체보기 (183)
      • Development (56)
        • Linux (13)
        • k8s (3)
        • Docker (5)
        • AWS (1)
        • PHP (35)
        • Python (21)
        • Java (1)
        • SpringBoot (4)
        • JavaScript (1)
        • React (8)
        • MySql (19)
        • MongoDB (1)
      • Daily (4)
      • Study (6)
        • TIL (1)
        • license (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 글쓰기
    • 설정
  • 링크

    • github
  • 공지사항

  • 인기 글

  • 태그

    리액트
    Selenium
    MySQL
    CentOS7
    error
    CentOS
    Linux
    UTF8
    springboot
    db
    ssh
    인코딩
    HTML
    Java
    docker
    정규표현식
    리눅스
    IP
    Shell
    JavaScript
    Python
    스프링부트
    react
    SQL
    크롤링
    윈도우
    php
    date
    chromedriver
    nodejs
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
곽진돔
[Python] instaloader 라이브러리
상단으로

티스토리툴바