본문 바로가기
Python

[파이썬] 인스타그램 해시태그 검색 크롤링 자동 리스트업

by 퍼포먼스마케팅코더 2022. 8. 7.
반응형

이번 거는 인스타그램 쪽으로 해시태그를 알아보는 이런 걸 가졌어요.  예를 들자면 인스타그램 쪽에 여러분들 인스타그램에 인기 있는 인플루언서 이런 거 협찬 받고 싶지 않습니까 그런 거 받을 때 쓸 수 있는 파이스 코딩이에요.  나름 뭐 저도 애용했었던 것 중에 하나인데 해시태기반으로 해서 인기 게시물에 있는 그런 계정들을 보고 싶지 않습니까 그런 얘네들을 대상으로 팔로우니 이런 것들 하더라도 유용한 그런 정보들이 얻을 수 있을 것 같아요.  그런 용도로 쓰이는 파이썬 코딩이라고 생각하시면 됩니다.  인스타그램 비공식 api 기준으로 가지고 온 거예요.  그래서 에러가 많이 날 수 있습니다.정확한 것은 아니에요. 그렇지만 필요한 사람들이 있을까 봐 싶어서 이렇게 가져왔습니다. 

파이썬 인스타그램 로그인

처음 파이썬 인스타그램 로그인이 있는데 로그인을 계정하고 비밀번호를 입력하고 로그인을 누르면 그거에 따라서 계정 로그인이 정상적으로 됩니다.

from instagrapi import Client
from instagrapi.types import StoryMention, StoryMedia, StoryLink, StoryHashtag

cl = Client()
cl.login('username', 
		'password') #유저계정, 비밀번호

파이썬 인스타그램 해시태그 관련 정보 가져오기

그리고 두 번째로 인스타그램에 해시태관련 정보를 가져오는 건데 한마디로 해시태그에 관련돼서 키워드를 치지 않습니까 그러면 해시태그의 건수가 나오는 거고 그에 따른 관련돼서 해시태그가 얼마만큼 건수가 있고 그에 따른 정보가 있느냐 이런 것들을 볼 수 있고요. 이외 쪽으로 인기 게시물들이 있지 않습니까? pc 기준이 있고 모바일 기준이 따로 있는데 보통은 저는 모바일 기준을 주로 사용을 합니다.  모바일 기준으로 볼 것이냐 아니면 최신 게시물 기준으로 볼 것이냐 이거는 선택 사항일 것 같아요. 

#해시태그 관련 정보 가져오기

hash_keyword = '갤럭시워치4스트랩'

#hashtag  = cl.hashtag_info(hash_keyword) #해시태그 건수  

#time.sleep(3)
#print(str(hashtag) +" 건수 정보 완료")

#hashtag_related_hashtags = cl.hashtag_related_hashtags(hash_keyword) #연관 해시태그 검색어 리스트

#hashtag_medias_top = cl.hashtag_medias_top(name=hash_keyword, amount = 2) #인기 게시물 정보(top 10)

#hashtag_medias_top = cl.hashtag_medias_top(name=hash_keyword, amount = 9) #인기 게시물 정보(top 10) 모바일기준


#hashtag_medias_top_1 = cl.hashtag_medias_v1(name= hash_keyword, amount = 27, tab_key = "top") #인기게시물(모바일기준)
hashtag_medias_top_1 = cl.hashtag_medias_v1(name= hash_keyword, amount = 27, tab_key = "recent") #최신게시물(모바일기준)

time.sleep(3)
#print("인기게시물 건수 정보 완료")

#hashtag_medias_top[0].dict() #결과값 보기

#hashtag_medias_recent = cl.hashtag_medias_recent(name=hash_keyword, amount=10) #최근게시물 정보 (30개)
#time.sleep(3)
print("최근게시물 건수 정보 완료")

#hashtag.dict()

 

파이썬 인스타그램 인기게시물 리스트업

그거에 따라서 선택해 주시면 될 것 같고 그다음에 인기 게시물을 리스트 업을 해야 되잖아요. 리스트 업을 엑셀 파일 기준 으로 해서 가지고 옵니다. 주로 가지고 오는 거는 계정 정보 팔로워 수 좋아요 수 코멘트 수 기타 등등 이런 것들이 되겠네요. 

f =  open('C:/Users/user/raw/instagram_info/hashtag_medias_top_results.csv', 'w', encoding='utf-8-sig') #csv파일 데이터 넣을거 생성
f.write("hashtags,instagram_url,username,insgta_followers,post_url,like_counts,comment_counts,user_info_biography_2"+'\n') #컬럼명 입력


#인스타그램 인기게시물 기준

for i in range(0, len(hashtag_medias_top_1)) : 
    text = hashtag_medias_top_1[i].dict()
    user = text['user']['username'] #계정명
    user_url = "https://www.instagram.com/" + str(user)  #해당 인기 게시물 인스타 계정명
    product = text['code'] #제품상세
    product_url = "https://www.instagram.com/p/" + str(product) #인기 게시물 상세 페이지
    comment_count = text['comment_count'] #댓글수
    like_count = text['like_count'] #좋아요수
    caption_text = text['caption_text'] #본문말 (해시태그 등)
    #print(caption_text)
    #유저정보
    user_info= cl.user_info_by_username(user) #튜플형태임
    time.sleep(3) #3초간격
    user_info_text = user_info.dict()
    user_info_media_count = user_info_text['media_count'] #게시물수
    user_info_follower_count = user_info_text['follower_count'] #팔로워수
    user_info_biography = user_info_text['biography'] #내용
    user_info_biography_2 = user_info_biography.replace(",", "") #필터링
    user_info_biography_2 = user_info_biography_2.replace("\n" ,"") #필터링
    #print(str(caption_text)) #본문 내용
    #print("----------------------------------------------------------------------------")
    f.write(str(hash_keyword)+','+str(user_url)+','+str(user)+','+str(user_info_follower_count)+','+str(product_url)+','+str(like_count)+','+str(comment_count)+','+str(user_info_biography_2)+'\n')
print(str(hashtag) +" 의 키워드의 처리 완료")

f.close()

파이썬 인스타그램 최신게시물 리스트업

이런 거 가지고 오니까 그런 거 참고만 해주시면 될 것 같고 마지막으로 최신 게시물 리스트업입니다. 최근 게시물 리스트 업도 위에 인기 게시물 가져온 것과 똑같아요.  그렇게 별다른 차이는 크게 없습니다. 

#인스타그램 최근게시물 top 100 기준

f =  open('C:/Users/user/raw/instagram_info/hashtag_medias_recent.csv', 'w', encoding='utf-8-sig') #csv파일 데이터 넣을거 생성
f.write("hashtags,instagram_url,username,insgta_followers,post_url,like_counts,comment_counts,user_info_biography_2"+'\n') #컬럼명 입력


for i in range(0, 26) : #Top 100
    text = hashtag_medias_top_1[i].dict()
    user = text['user']['username'] #계정명
    user_url = "https://www.instagram.com/" + str(user)  #해당 인기 게시물 인스타 계정명
    product = text['code'] #제품상세
    product_url = "https://www.instagram.com/p/" + str(product) #인기 게시물 상세 페이지
    comment_count = text['comment_count'] #댓글수
    like_count = text['like_count'] #좋아요수
    caption_text = text['caption_text'] #본문말 (해시태그 등)
    #print(product_url)
    
    #유저정보
    user_info= cl.user_info_by_username(user) #튜플형태임
    time.sleep(3) #3초간격
    user_info_text = user_info.dict()
    user_info_media_count = user_info_text['media_count'] #게시물수
    user_info_follower_count = user_info_text['follower_count'] #팔로워수
    user_info_biography = user_info_text['biography'] #내용
    user_info_biography_2 = user_info_biography.replace(",", "") #필터링
    user_info_biography_2 = user_info_biography_2.replace("\n" ,"") #필터링
    f.write(str(hash_keyword)+','+str(user_url)+','+str(user)+','+str(user_info_follower_count)+','+str(product_url)+','+str(like_count)+','+str(comment_count)+','+str(user_info_biography_2)   +'\n')
print(str(hashtag) +" 의 키워드의 처리 완료")

f.close()

오늘은 여기까지입니다.

반응형

댓글