<작성중인 게시물입니다.>
인스타그램 크롤링 어플리케이션을 만들어 보았습니다.
gui 는 qt 를 이용하엿고 python 언어로 크롤링 알고리즘을 구현하였습니다.
작업은 다음과 같은 순서로 진행하였습니다.
인스타 그램에서 해시태그 검색시 가져올수 있는 데이터 목록은 아래를 통해서 확인한다.
$pip install requests
#python3.9
import requests
import json
hashtag = "닭가슴살요리"
initial_url = f"https://www.instagram.com/explore/tags/{hashtag}/?__a=1"
response = requests.get(url=initial_url)
print(json.loads(response.text))
이렇게 실행하면 로그인이 안되있어서 데이터를 받아 올 수 없음
로그인 기능 구현해서 해당 세션으로 url 요청 해주어야 함
import datetime
import requests
_session = requests.Session()
username = "<isntagram_username>" #인스타그램 아이디 입력
password = "<instagram_password>" #인스타그램 비밀번호 입력
link = "https://www.instagram.com/accounts/login/"
login_url = "https://www.instagram.com/accounts/login/ajax/"
time = int(datetime.now().timestamp())
getCSRF = _session.get(link)
cookieString = str(getCSRF.cookies)
LoginCSRFtoken = cookieString[37:69]
payload = {
'username': username,
'enc_password': f'#PWD_INSTAGRAM_BROWSER:0:{time}:{password}',
'queryParams': {},
'optIntoOneTap': 'false'
}
login_header = {
"User-Agent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36",
"X-Requested-With": "XMLHttpRequest",
"Referer": "https://www.instagram.com/accounts/login/",
"x-csrftoken": LoginCSRFtoken
}
response = _session.post(login_url,data=payload,headers=login_header)
해당 세션으로 다시 요청해보면 아래와 같이 데이터가 나옴
데이터를 가져왔으면 실제 우리가 사용할 데이터 위치와 필드는 아래와 같다.
형님 ~ 안녕하세요 !
저는 계속 아래와 같은 애러가 발생하는데
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
세션으로 로그인이 안되어서 그런건가요??..