Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 서평
- 리눅스
- MySQL
- 통계학
- 파이썬
- Tistory
- 독후감
- Python
- 블로그
- python visualization
- 한빛미디어
- matplotlib
- Blog
- 시각화
- 한빛미디어서평단
- Visualization
- 월간결산
- Google Analytics
- SQL
- 서평단
- 딥러닝
- 티스토리
- tensorflow
- Pandas
- Linux
- MATLAB
- Ga
- 텐서플로
- 파이썬 시각화
- 매틀랩
Archives
- Today
- Total
pbj0812의 코딩 일기
[PYTHON] PyQt5 + pyinstaller를 사용한 twitter 크롤링 프로그램 제작 본문
ComputerLanguage_Program/PYTHON
[PYTHON] PyQt5 + pyinstaller를 사용한 twitter 크롤링 프로그램 제작
pbj0812 2020. 2. 24. 01:270. Flow Chart
1) 사용자가 원하는 키워드를 입력하고 검색 버튼 클릭
2) python을 사용해서 twitter에서 연관 키워드 글 추출
3) pandas를 사용해서 xlsx 형식으로 제공
1. 준비물
1) 트위터 앱 생성(링크)
- Create an app을 눌러 생성
- Details 클릭 이후 Keys and tokens의 아래 키들 확인(보관 주의)
2) 필요 라이브러리 설치
pip install PyQt5
pip install pyinstaller
pip install tweepy
2. 코드
1) library 호출
import sys
from PyQt5.QtWidgets import *
import tweepy
import pandas as pd
from pandas import ExcelWriter
import openpyxl
2) 본문
(1) initUI 에서 GUI의 형태 구성
(2) crawl_news에서는 raw data 를 xlsx 파일(twitter_result.xlsx)로 추출
(3) crawl_news2에서는 set으로 변형하여 중복 제거 뒤 xlsx 파일(twitter_deduplication.xlsx)로 추출
class MyApp(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.le = QLineEdit()
self.le.setPlaceholderText('Enter your search word')
self.le.returnPressed.connect(self.crawl_news)
self.le.returnPressed.connect(self.crawl_news2)
self.le2 = QLineEdit()
self.le2.setPlaceholderText('Write search page')
self.le2.returnPressed.connect(self.crawl_news)
self.le2.returnPressed.connect(self.crawl_news2)
self.btn = QPushButton('Search')
self.btn.clicked.connect(self.crawl_news)
self.btn2 = QPushButton('deduplication')
self.btn2.clicked.connect(self.crawl_news2)
grid = QGridLayout()
grid.addWidget(self.le, 0, 0, 1, 4)
grid.addWidget(self.le2, 1, 0, 1, 4)
grid.addWidget(self.btn, 2, 0, 1, 4)
grid.addWidget(self.btn2, 3, 0, 1, 4)
self.setLayout(grid)
self.setWindowTitle('Twitter Crawler')
self.setGeometry(100, 100, 400, 250)
self.show()
def crawl_news(self):
keyword = self.le.text()
consumer_key = '****************'
consumer_secret = '**************'
access_token = '*************'
access_token_secret= '**************'
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)
search = []
if int(self.le2.text()) >= 1:
pages = int(self.le2.text())
else:
pages = 10
cnt = 1
while(cnt <= pages):
tweets = api.search(keyword)
for tweet in tweets:
search.append(tweet)
cnt += 1
data_pd = []
for tweet in search:
data_pd.append(tweet.text)
result = pd.DataFrame(data_pd)
result.to_excel('./twitter_result.xlsx')
def crawl_news2(self):
keyword = self.le.text()
consumer_key = '**********'
consumer_secret = '**********'
access_token = '**********'
access_token_secret= '**********'
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)
search = []
if int(self.le2.text()) >= 1:
pages = int(self.le2.text())
else:
pages = 10
cnt = 1
while(cnt <= pages):
tweets = api.search(keyword)
for tweet in tweets:
search.append(tweet)
cnt += 1
data_pd = []
for tweet in search:
data_pd.append(tweet.text)
set_data = set(data_pd)
result = pd.DataFrame(set_data)
result.to_excel('./twitter_deduplication.xlsx')
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = MyApp()
sys.exit(app.exec_())
3. 실행파일 생성
pyinstaller -w -F twitter_crawler.py
4. 결과
- 폴더 및 실행파일 생성
- 결과파일은 기본 폴더에 생성
- 결과 비교(twitter_result.xlsx, twitter_deduplication.xlsx)
5. 참고
1) PyQt5
'ComputerLanguage_Program > PYTHON' 카테고리의 다른 글
[PYTHON] TensorFlow Certification 시험준비(PyCharm) (0) | 2020.04.04 |
---|---|
[Python] sklearn의 DecisionTree 사용 / Graphviz 설치 (0) | 2020.03.11 |
[PYTHON] OpenCV를 활용한 기생충 웹캠 어플리케이션 만들기 (0) | 2020.02.22 |
[PYTHON] OpenCV를 활용한 나만의 기생충 포스터 만들기 (0) | 2020.02.15 |
[PYTHON] OpenCV로 민아누나 안경 씌우기 (0) | 2020.02.14 |
Comments