IT 기업 관련 트윗 데이터 수집 파이프라인
본 모듈은 Twitter(X) 에서 IT 기업 관련 트윗을 수집하여 SQLite 데이터베이스에 저장하는 데이터 수집 파이프라인입니다.
| 기업 | 검색 쿼리 |
|---|---|
| 🍎 Apple | #Apple, @Apple |
| 📦 Amazon | amazon |
| 💻 Microsoft | microsoft |
google |
|
| 🎮 NVIDIA | nvidia |
Data Gathering/
├── 📄 scraping.py # 트윗 스크래핑 메인 스크립트
├── 📄 models.py # SQLAlchemy ORM 모델 정의
├── 📄 database.py # 데이터베이스 연결 설정
├── 📄 preproc.py # 텍스트 전처리 유틸리티
└── 📁 databases/ # SQLite DB 저장 폴더
└── raw_total.db # 수집된 트윗 데이터
| 기술 | 설명 |
|---|---|
| snscrape | Twitter 스크래핑 라이브러리 |
| SQLAlchemy | Python ORM |
| SQLite | 경량 데이터베이스 |
class Tweet(Base):
__tablename__ = 'tweet'
id = Column(Integer, primary_key=True) # 트윗 고유 ID
tweetDate = Column(DateTime) # 트윗 작성 시간
createdDate = Column(DateTime) # DB 저장 시간
rawContent = Column(Text) # 원본 트윗 내용
renderedContent = Column(Text) # 렌더링된 내용
lang = Column(Text) # 언어
url = Column(Text) # 트윗 URL
replyCount = Column(Integer) # 답글 수
retweetCount = Column(Integer) # 리트윗 수
likeCount = Column(Integer) # 좋아요 수
quoteCount = Column(Integer) # 인용 수
viewCount = Column(Integer) # 조회수
hashtags = Column(Text) # 해시태그
companyName = Column(Text) # 대상 기업명# 의존성 설치
pip install snscrape sqlalchemy
# 데이터베이스 폴더 생성
mkdir databasespython scraping.py
⚠️ 참고: 스크립트는 무한 루프로 실행되며, 각 기업에 대해 연속적으로 트윗을 수집합니다. 중복 트윗이 200번 연속 발생하면 해당 기업 수집을 중단합니다.
| 항목 | 값 |
|---|---|
| 수집 기간 | 2023.05.23 ~ 2023.06.15 |
| 총 트윗 수 | ~50,000개 |
| 대상 기업 | 5개 |
| 언어 | 영어 (주요) |
graph LR
A[Twitter API] --> B[snscrape]
B --> C[scraping.py]
C --> D[SQLAlchemy ORM]
D --> E[SQLite DB]
E --> F[AI Modeling]
try:
session.add(t)
session.commit()
except IntegrityError:
session.rollback() # 중복 트윗 무시if no_change_cnt > 199: # 200번 연속 중복 시 중단
print('too many conflicts with tweets in db')
break# Apple의 경우 해시태그와 멘션 모두 수집
scrape_twitter('#Apple', company)
scrape_twitter('@Apple', company)- 🤖 AI Modeling - 토픽 모델링 & 감성 분석
- 📊 Frontend - React 대시보드
- 🖥️ Web Server - FastAPI 백엔드
MIT License
Senty Project - 트윗 기반 IT 기업 감성 분석 📊