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 |