인스타그램 공개 계정 게시물 접근 오류 해결 방법
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
개발 툴
대상자
Python 개발자 / Instagram 스크래핑 전문가 (초보자~중급자)
핵심 요약
JSON Query to graphql/query: Expecting value: line...
오류는 Instagram API 변경 또는 인증 문제로 인해 발생- Instaloader v4.8 이상 업데이트 및 GraphQL 헤더 추가가 필수적
--login
인증 또는--request-timeout
설정으로 요청 제한 문제 해결
섹션별 세부 요약
1. 오류 원인 분석
- Instaloader v4.8 이전 버전은 Instagram의 GraphQL API 구조 변경으로 인해 JSON 파싱 실패
- 공개 계정이라도 인증 토큰이 필요해지는 새로운 API 정책 반영
profile_pic_only=False
시 GraphQL 쿼리 응답 형식 변경으로 인한 파싱 오류
2. 해결 방법
- Instaloader 업데이트
```bash
pip install instaloader --upgrade
```
- GraphQL 헤더 추가 (Instaloader 4.8+ 지원)
```python
L = instaloader.Instaloader()
L.context.headers.update({"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36"})
```
- 인증 강제 (계정 로그인 필요)
```python
L.login("your_username", "your_password")
```
3. 추가 최적화 팁
- 요청 제한 회피
```python
L.request_timeout = 60 # 초 단위 타임아웃 설정
```
- 로그 수집
```python
L.save_cookies("cookies.txt") # 세션 정보 저장
```
- 대규모 다운로드 시 병렬 처리
```python
from concurrent.futures import ThreadPoolExecutor
with ThreadPoolExecutor(max_workers=5) as executor:
executor.map(download_profile, usernames)
```
결론
Instaloader 4.8 이상 업데이트 및 GraphQL 헤더 설정으로 오류 해결, 대규모 다운로드 시 ThreadPoolExecutor
병렬 처리 권장. 인증 필요 시 --login
플래그 사용.