Instagram 계정의 Follower 크롤링
개요
Instagram 계정의 모든 팔로워 정보를 크롤링합니다.
공식 Instagram API에는 자신의 팔로워 목록을 얻는 API가 있지만 다른 팔로워 목록을 얻는 API는 없습니다.
그래서 이번에는 모든 계정의 팔로워 정보를 크롤링하는 프로그램을 만들었습니다.
전제 조건
이 프로그램을 사용하기위한 전제 조건
1. Instagram 계정이 있습니다.
2. 조사하려는 계정의 User ID를 알고 있습니다.
3. 자신의 Query ID 되는 것을 알고 있다
2와 3에 대한 자세한 내용은 나중에 설명합니다.
프로그램
crawl_followers.py
import requests
import json
# Your Account info
def get_user_info():
return {
"username": "your_account",
"password": "your_password"
}
# HTTP Headers to login
def login_http_headers():
ua = "".join(["Mozilla/5.0 (Windows NT 6.1; WOW64) ",
"AppleWebKit/537.36 (KHTML, like Gecko) ",
"Chrome/56.0.2924.87 Safari/537.36"])
return {
"user-agent": ua,
"referer":"https://www.instagram.com/",
"x-csrftoken":"null",
"cookie":"sessionid=null; csrftoken=null"
}
# login session
def logined_session():
session = requests.Session()
login_headers = login_http_headers()
user_info = get_user_info()
login_url = "https://www.instagram.com/accounts/login/ajax/"
session.post(login_url, data=user_info, headers=login_headers)
return session
# a fetch (max 3000 followers)
def fetch_followers(session, user_id, query_id, after=None):
variables = {
"id": user_id,
"first": 3000,
}
if after:
variables["after"] = after
followers_url = "".join(["https://www.instagram.com/graphql/query/?",
"query_id=" + query_id + "&",
"variables=" + json.dumps(variables)])
# HTTP Request
followers = session.get(followers_url)
dic = json.loads(followers.text)
edge_followed_by = dic["data"]["user"]["edge_followed_by"]
count = edge_followed_by["count"] # number of followers
after = edge_followed_by["page_info"]["end_cursor"] # next pagination
has_next = edge_followed_by["page_info"]["has_next_page"]
return {
"count": count,
"after": after,
"has_next": has_next,
"followers": edge_followed_by["edges"]
}
def fetch_all_followers(session, user_id, query_id):
after = None # pagination
followers = []
while(True):
fetched_followers = fetch_followers(session, user_id, query_id, after)
followers += fetched_followers["followers"]
if fetched_followers["has_next"]:
after = fetched_followers["after"]
else:
return {
"count": fetched_followers["count"],
"followers": followers
}
def main(user_id, query_id):
session = logined_session()
return fetch_all_followers(session, user_id, query_id)
if __name__ == '__main__':
user_id = "3425874156" # user id to search
query_id = "" # your query id
main(user_id, query_id)
조사하려는 계정의 User ID 알아보기
특정 계정의 사용자 ID를 알기 쉽습니다. 일반적으로 Instagram GUI에서 볼 수 있습니다.
예: taylorswift user id 알아보기
1단계: 크롬 열기
2단계: 개발자 도구 열기
3단계: 네트워크 탭으로 이동
4단계: htps //w w. Ins g et al. 코 m/타 yぉr ぃft/ 방문
5 단계 : ↓에서/query를 클릭하십시오
6단계: Response 탭으로 이동하여 "owner"라는 키를 찾습니다.
7단계: "owner"의 "id"라는 키 옆에 있는 문자열이 User ID입니다.
자신의 query id 알아
1단계: 크롬 열기
2단계: htps //w w. Ins g et al. 코m/ 부터 login
3단계: htps //w w. Ins g et al. 코 m/타 yぉr ぃft/ 방문
4단계: 개발자 도구 열기
5단계: 네트워크 열기
6단계: taylor에서 Followers 클릭
7단계: ↓에 있는 요청의 ?query_id 부분이 자신의 query id입니다(숨겨진 부분에 실제로 있음)
Query ID에 대해 알았습니다.
· 다시 로그인해도 항상 동일
· 계정을 변경하면 다른 것입니다.
· 인스 타 그램의 공식 API에서 이러한 스킬을 얻을 수 없습니다.
· 결론, 정체는 잘 모르겠지만, 계정과 일대일의 관계에있는 뭔가의 ID
이상하다
Reference
이 문제에 관하여(Instagram 계정의 Follower 크롤링), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kon_now/items/aa6fdd58c86664d55113
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
이 프로그램을 사용하기위한 전제 조건
1. Instagram 계정이 있습니다.
2. 조사하려는 계정의 User ID를 알고 있습니다.
3. 자신의 Query ID 되는 것을 알고 있다
2와 3에 대한 자세한 내용은 나중에 설명합니다.
프로그램
crawl_followers.py
import requests
import json
# Your Account info
def get_user_info():
return {
"username": "your_account",
"password": "your_password"
}
# HTTP Headers to login
def login_http_headers():
ua = "".join(["Mozilla/5.0 (Windows NT 6.1; WOW64) ",
"AppleWebKit/537.36 (KHTML, like Gecko) ",
"Chrome/56.0.2924.87 Safari/537.36"])
return {
"user-agent": ua,
"referer":"https://www.instagram.com/",
"x-csrftoken":"null",
"cookie":"sessionid=null; csrftoken=null"
}
# login session
def logined_session():
session = requests.Session()
login_headers = login_http_headers()
user_info = get_user_info()
login_url = "https://www.instagram.com/accounts/login/ajax/"
session.post(login_url, data=user_info, headers=login_headers)
return session
# a fetch (max 3000 followers)
def fetch_followers(session, user_id, query_id, after=None):
variables = {
"id": user_id,
"first": 3000,
}
if after:
variables["after"] = after
followers_url = "".join(["https://www.instagram.com/graphql/query/?",
"query_id=" + query_id + "&",
"variables=" + json.dumps(variables)])
# HTTP Request
followers = session.get(followers_url)
dic = json.loads(followers.text)
edge_followed_by = dic["data"]["user"]["edge_followed_by"]
count = edge_followed_by["count"] # number of followers
after = edge_followed_by["page_info"]["end_cursor"] # next pagination
has_next = edge_followed_by["page_info"]["has_next_page"]
return {
"count": count,
"after": after,
"has_next": has_next,
"followers": edge_followed_by["edges"]
}
def fetch_all_followers(session, user_id, query_id):
after = None # pagination
followers = []
while(True):
fetched_followers = fetch_followers(session, user_id, query_id, after)
followers += fetched_followers["followers"]
if fetched_followers["has_next"]:
after = fetched_followers["after"]
else:
return {
"count": fetched_followers["count"],
"followers": followers
}
def main(user_id, query_id):
session = logined_session()
return fetch_all_followers(session, user_id, query_id)
if __name__ == '__main__':
user_id = "3425874156" # user id to search
query_id = "" # your query id
main(user_id, query_id)
조사하려는 계정의 User ID 알아보기
특정 계정의 사용자 ID를 알기 쉽습니다. 일반적으로 Instagram GUI에서 볼 수 있습니다.
예: taylorswift user id 알아보기
1단계: 크롬 열기
2단계: 개발자 도구 열기
3단계: 네트워크 탭으로 이동
4단계: htps //w w. Ins g et al. 코 m/타 yぉr ぃft/ 방문
5 단계 : ↓에서/query를 클릭하십시오
6단계: Response 탭으로 이동하여 "owner"라는 키를 찾습니다.
7단계: "owner"의 "id"라는 키 옆에 있는 문자열이 User ID입니다.
자신의 query id 알아
1단계: 크롬 열기
2단계: htps //w w. Ins g et al. 코m/ 부터 login
3단계: htps //w w. Ins g et al. 코 m/타 yぉr ぃft/ 방문
4단계: 개발자 도구 열기
5단계: 네트워크 열기
6단계: taylor에서 Followers 클릭
7단계: ↓에 있는 요청의 ?query_id 부분이 자신의 query id입니다(숨겨진 부분에 실제로 있음)
Query ID에 대해 알았습니다.
· 다시 로그인해도 항상 동일
· 계정을 변경하면 다른 것입니다.
· 인스 타 그램의 공식 API에서 이러한 스킬을 얻을 수 없습니다.
· 결론, 정체는 잘 모르겠지만, 계정과 일대일의 관계에있는 뭔가의 ID
이상하다
Reference
이 문제에 관하여(Instagram 계정의 Follower 크롤링), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kon_now/items/aa6fdd58c86664d55113
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import requests
import json
# Your Account info
def get_user_info():
return {
"username": "your_account",
"password": "your_password"
}
# HTTP Headers to login
def login_http_headers():
ua = "".join(["Mozilla/5.0 (Windows NT 6.1; WOW64) ",
"AppleWebKit/537.36 (KHTML, like Gecko) ",
"Chrome/56.0.2924.87 Safari/537.36"])
return {
"user-agent": ua,
"referer":"https://www.instagram.com/",
"x-csrftoken":"null",
"cookie":"sessionid=null; csrftoken=null"
}
# login session
def logined_session():
session = requests.Session()
login_headers = login_http_headers()
user_info = get_user_info()
login_url = "https://www.instagram.com/accounts/login/ajax/"
session.post(login_url, data=user_info, headers=login_headers)
return session
# a fetch (max 3000 followers)
def fetch_followers(session, user_id, query_id, after=None):
variables = {
"id": user_id,
"first": 3000,
}
if after:
variables["after"] = after
followers_url = "".join(["https://www.instagram.com/graphql/query/?",
"query_id=" + query_id + "&",
"variables=" + json.dumps(variables)])
# HTTP Request
followers = session.get(followers_url)
dic = json.loads(followers.text)
edge_followed_by = dic["data"]["user"]["edge_followed_by"]
count = edge_followed_by["count"] # number of followers
after = edge_followed_by["page_info"]["end_cursor"] # next pagination
has_next = edge_followed_by["page_info"]["has_next_page"]
return {
"count": count,
"after": after,
"has_next": has_next,
"followers": edge_followed_by["edges"]
}
def fetch_all_followers(session, user_id, query_id):
after = None # pagination
followers = []
while(True):
fetched_followers = fetch_followers(session, user_id, query_id, after)
followers += fetched_followers["followers"]
if fetched_followers["has_next"]:
after = fetched_followers["after"]
else:
return {
"count": fetched_followers["count"],
"followers": followers
}
def main(user_id, query_id):
session = logined_session()
return fetch_all_followers(session, user_id, query_id)
if __name__ == '__main__':
user_id = "3425874156" # user id to search
query_id = "" # your query id
main(user_id, query_id)
특정 계정의 사용자 ID를 알기 쉽습니다. 일반적으로 Instagram GUI에서 볼 수 있습니다.
예: taylorswift user id 알아보기
1단계: 크롬 열기
2단계: 개발자 도구 열기
3단계: 네트워크 탭으로 이동
4단계: htps //w w. Ins g et al. 코 m/타 yぉr ぃft/ 방문
5 단계 : ↓에서/query를 클릭하십시오
6단계: Response 탭으로 이동하여 "owner"라는 키를 찾습니다.
7단계: "owner"의 "id"라는 키 옆에 있는 문자열이 User ID입니다.
자신의 query id 알아
1단계: 크롬 열기
2단계: htps //w w. Ins g et al. 코m/ 부터 login
3단계: htps //w w. Ins g et al. 코 m/타 yぉr ぃft/ 방문
4단계: 개발자 도구 열기
5단계: 네트워크 열기
6단계: taylor에서 Followers 클릭
7단계: ↓에 있는 요청의 ?query_id 부분이 자신의 query id입니다(숨겨진 부분에 실제로 있음)
Query ID에 대해 알았습니다.
· 다시 로그인해도 항상 동일
· 계정을 변경하면 다른 것입니다.
· 인스 타 그램의 공식 API에서 이러한 스킬을 얻을 수 없습니다.
· 결론, 정체는 잘 모르겠지만, 계정과 일대일의 관계에있는 뭔가의 ID
이상하다
Reference
이 문제에 관하여(Instagram 계정의 Follower 크롤링), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kon_now/items/aa6fdd58c86664d55113
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Instagram 계정의 Follower 크롤링), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kon_now/items/aa6fdd58c86664d55113텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)