반응형
공식 X(Twitter) API는 유료화와 요청 제한으로 인해
전문적인 데이터를 필요로 하는 개인이나 소규모 프로젝트에서 사용하기 어렵습니다.
이를 대체할 수 있는 오픈소스 도구인 twscrape는
트위터 계정 로그인 기반으로 키워드, 사용자, 기간 조건 등 자유롭게 트윗을 수집하고 분석할 수 있는 비공식 API 도구입니다.
이 글에서는 twscrape를 활용해 트위터 계정 등록부터 키워드 기반 트윗 수집, CSV 저장까지 전 과정을 소개합니다.
📌 목표
- 트위터 계정을 twscrape에 등록하고
- 로그인하여
- 키워드 기반으로 트윗을 수집하는 방법
1단계. Python 패키지 설치
pip install twscrape
2단계. 계정 정보 파일 만들기 + 캐시 저장 설명
파일명: login_accounts.txt
형식:
username:password:email:email_password:_:cookies
Obscura0409:your_password:mymail@gmail.com:your_email_app_password:_:cookies
🍪 쿠키 확인법:
- 트위터 로그인
- 크롬 개발자 도구 → Application 탭 → Cookies → https://twitter.com 선택
- ct0 값을 복사 후 붙여 넣이
3단계. 계정 등록 (터미널 명령어)
twscrape add_accounts login_accounts.txt username:password:email:email_password:_
4단계. 트위터 로그인 실행
twscrape login_accounts
이메일 수동 인증이 필요할 경우:
twscrape login_accounts --manual
5단계. 계정 상태 확인
twscrape accounts
필드 설명
username | 사용자 이름 |
---|---|
logged_in | 로그인 성공 여부 |
active | 현재 사용 가능한 상태인지 |
error_msg | 로그인 실패 사유 |
6단계. 파이썬으로 트윗 수집 (예: 챗GPT 관련)
import asyncio
import pandas as pd
from twscrape import API
from twscrape.logger import set_log_level
set_log_level("INFO")
async def main():
api = API()
tweet_list = []
query = "챗GPT since:2023-05-24 until:2023-09-24" # 검색어, 검색 기간
async for tweet in api.search(query, limit=100): # limit: 수집할 데이터 수
tweet_list.append([
tweet.date,
tweet.user.username,
tweet.user.displayname,
tweet.rawContent,
tweet.url
])
df = pd.DataFrame(tweet_list, columns=['Date', 'User', 'Nickname', 'Tweet', 'URL'])
df.to_csv("chatgpt_tweets.csv", index=False, encoding="utf-8-sig")
print("✅ CSV 저장 완료!")
asyncio.run(main())
💡 참고 꿀팁
상황 해결 방법
계정 로그인 막힘 (IP Ban) | 프록시 사용 또는 쿠키 방식 전환 |
---|---|
IMAP 불가 이메일 사용 중 | --manual 플래그로 수동 인증 |
수집량 늘리고 싶을 때 | 계정 여러 개 등록하여 분산 수집 |
IP 차단 가능성 | 너무 많이 요청하면 Twitter 측에서 계정 차단될 수 있음 |
📂 전체 폴더 구조 예시
/xscrapper
├── main.py
├── login_accounts.txt
├── accounts.db (자동 생성)
반응형