마스터욱
Toggle navigation
  • 회원가입 | 정보찾기
ICON NAVIGATION
정보수정 쪽지함 주변맛집 익명채팅
공지사항 채팅 개발문의 방명록
  • MAIN NAVIGATION
  • 메인
  • 마스터욱 공간
    • 마스터욱 소개
    • 개발 리스트
    • 공지사항
    • 방명록
  • 마스터욱 외부자료
    • 네이버
    • 티스토리
    • 깃허브(github)
  • 개인 프로젝트
    • 랜덤 이성 채팅
    • Auto 크롤링
    • Javascript 카카오 채팅
    • 파이썬 뉴스매매
    • C# 키움 주식 자동매매
    • C# 키움 주식 패턴 분석
    • PHP 욱보드
    • 업비트 자동매매 개발
    • 업비트 자동매매 일지
  • 개발 의뢰
    • 개발 문의
    • 개발 견적
    • 개발 피드백
    • FAQ
  • 개발 경험 Tip
    • PHP
    • JSP
    • HTML
    • Javascript
    • Android
    • C#
    • MySQL
    • Linux
    • Python
    • NodeJS
    • React
    • Vue.js
    • Flutter
    • 정규식
    • 기타
  • 커뮤니티
    • 자유게시판
    • 추천사이트
    • 영화
    • 여행
    • 유머
    • Overseas News
  • 맛집&즐길 거리 탐방
    • 맛집 정보
    • 즐길 거리 정보
    • 내 주위 맛집&즐길 거리
  • 공유 사진
    • 음식
    • 여행
    • 캐릭터
    • 배경
    • 기타
    • 이모티콘
    • 일러스트
  • 놀이터
    • 블록뽀시기
    • 트레이딩뷰
    • 로또 시뮬레이션
    • 쳇쳇 익명 채팅
    • 랜덤 이성 채팅
    • AI 채팅
    • 미니 채팅
    • 바이너리 테스트
    • 마번호 생성기
    • 바카라 시뮬레이션
    • 홀짝점수 테스트
    • 로또 분석기
SITE STATISTICS
  • - 명 현재 접속자
  • 1,462 명 오늘 방문자
  • 2,173 명 어제 방문자
  • 5,192 명 최대 방문자
  • 683,048 명 전체 방문자
  • 2,569 개 전체 게시물
  • 496 개 전체 댓글수
Facebook Twitter GooglePlus KakaoStory NaverBand
  1. 홈
  2. 파이썬
목록으로

뉴스 자동매매 구현중 중간소스 점검

마스터욱 0 233 0 0 2018-03-14 00:03:40

확실히 닷넷보다 개발하기 편하네요. 

앞으로 윈도우 프로그램은 다 파이썬으로 짜야겠다 ㅋㅋ

일단 공시뉴스 데이터가 있어야 매수든 매도든 할거 아니겠어요?
그래서 xx증권 사이트에 들어가서 공시뉴스를 가져오는 소스까지 짜뒀습니다.

개발하면서 느낀건데, 저는 소스코드에 관해 약간의 결벽증이 있었던 것 같습니다.
어떻게든 깔끔하게 짜고 싶은 성격이랄까...
그런데 그렇게 개발하니 저만 피곤하고, 신경쓸게 많다보니 짜증나더라구요~
맘편하게 주석도 왕창달고, 더럽게 짜니깐 맘편하네요 케케케~

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
import sys
import lib as lib
from PyQt5.QtWidgets import *
import pandas as pd
from pprint import pprint
import re
import requests
 
import json
from collections import OrderedDict
 
class MyWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("뉴스매매(Makeby 욱)")
        self.setGeometry(300, 300, 1200, 700)
        self.setTable()
 
        """""
        btn1 = QPushButton("Click me", self)
        btn1.move(20, 20)
        btn1.clicked.connect(self.btn1_clicked)
        """
 
    def setTable(self):
        #self.setGeometry(5,5,200,200)
 
        newsLabel = QLabel("실시간 뉴스", self)
        newsLabel.setGeometry(5, 5, 500, 50)
 
        self.tableWidget = QTableWidget(self)
 
        #self.tableWidget.resize(500, 500)
        self.tableWidget.setGeometry(5, 50, 500, 500)
 
        self.tableWidget.setRowCount(20)
        self.tableWidget.setColumnCount(2)
 
        #self.tableWidget.setVerticalHeaderLabels(['1','2'])
        self.tableWidget.setHorizontalHeaderLabels(['제목', '시간'])
 
        #데이터 넣기
        #self.setTableWidgetData()
 
        #뉴스 저장하기
        self.setNews()
        #뉴스 가져오기
        self.getNews()
 
 
    def setTableWidgetData(self):
        self.tableWidget.setItem(0, 0, QTableWidgetItem("(0,0)"))
        self.tableWidget.setItem(0, 1, QTableWidgetItem("(0,1)"))
        self.tableWidget.setItem(1, 0, QTableWidgetItem("(1,0)"))
        self.tableWidget.setItem(1, 1, QTableWidgetItem("(1,1)"))
 
    """
    def btn1_clicked(self):
        QMessageBox.about(self, "message", "clicked")
    """
 
    #API 서버에서 뉴스크롤링 실행시키기
    def setNews2(self):
        post_data = {"type":"croll"}
        url = "apiurl"
        r = requests.post(url, data=post_data)
        result_json = r.text #{"result":"OK"}
 
        # JSON 디코딩
        dict = json.loads(result_json)
 
 
    #파이썬 자체에서 크롤링
    def setNews(self):
        #공시정보 가져오기
        #lib.get_financial_statements('http://dart.fss.or.kr/api/search.json?auth=5d7fe977e575fb2ec15661d0a1556f40793237f6')
        outhtml = lib.get_financial_statements('크롤링 url')
        #print(outhtml)
        #output = re.match(r'(?s).*<!-- List BBS Block Start -->(.*)<!-- //List BBS Block End -->.*', outhtml, re.M|re.I)
        #print(output.group(1))
        #output = re.match(r'(?s).*<div class="newListArea">(.*)</div>(.*)</div>.*', output.group(1), re.M|re.I)
        output = re.match(r'(?s).*<!-- %%LIST data%% -->(.*)<!-- %%ENDLIST data%% -->.*', outhtml, re.M | re.I)
        output_data = '';
        if output is not None:
            output_data = output.group(1)
            #print(output)
        else:
            print("젠장... 비었음...")
 
        #print(output_data)
        outlist = re.split('</tr>', output_data)
        #pprint(outlist)
 
        cnt = 0
        all_json = OrderedDict()
        for row in outlist:
            #date = lib.get_between_string(row, '<div id="date_0">', '</div>')
            #print(row)
            row_list = re.split('<td', row)
            #pprint(row_list)
            #print(row_list[2])
            #print(lib.strip_tags(row_list[3]))
            #print(row_list[3])
            date = ''
            time = ''
            title = ''
            try:
                row_json = OrderedDict()
                tmp = re.match(r'(?s).*<div id="date_.*">(.*)</div></td>.*', row_list[1])
                date = tmp.group(1)
 
                tmp = re.match(r'(?s).*<div id="time_.*">(.*)</div></td>.*', row_list[2])
                time = tmp.group(1)
 
                tmp = re.match(r'(?s).*<div id=\'title_.*\'>(.*)</div></a>.*', row_list[3])
                title = tmp.group(1)
                title = title.replace('  ','')
 
                row_json['date'] = date
                row_json['time'] = time
                row_json['title'] = title
 
                all_json[str(cnt)] = row_json
            except:
                print("끝줄에러")
 
            '''
            test = ""
            test += "date = " + date + " || "
            test += "time = " + time + " || "
            test += "title = " + title + " || "
            print(str(cnt) + " = " + test)
            '''
            cnt = cnt + 1
 
 
        #pprint(all_json)
        jsonString = json.dumps(all_json)
        post_data = {'data': jsonString, "type": "news_toss"}
        #print(jsonString)
        #pprint(post_data)
 
        #디비에 저장
        url = "/api/set_news.php"
        r = requests.post(url, data=post_data)
        result_json = r.text #{"result":"OK"}
 
 
    def getNews(self):
        url = "apiurl"
        r = requests.post(url)
        result_json = r.text #{"result":"OK"}
 
        # JSON 디코딩
        dict = json.loads(result_json)
 
        # Dictionary 데이타 체크
        #print(dict['result'])
 
        #print(dict['list'])
        cnt = 0;
        for row in dict['list']:
            print(row['title'] + " " + row['time'])
            self.tableWidget.setItem(cnt, 0, QTableWidgetItem(row['title']))
            self.tableWidget.setItem(cnt, 1, QTableWidgetItem(row['time']))
            cnt = cnt + 1
 
        #각 열크기 맞춤
        self.tableWidget.resizeColumnsToContents()
        self.tableWidget.resizeRowsToContents()
 
 
if __name__ == "__main__":
    app = QApplication(sys.argv)
    #print(sys.argv) #D:/project/python/hello/hello.py
    myWindow = MyWindow()
    myWindow.show()
    app.exec_()
Colored by Color Scripter
cs

 

0
0

목록

Facebook Twitter GooglePlus KakaoStory NaverBand
0 Comments

비밀번호 확인

확인
댓글은 자신을 나타내는 '얼굴'입니다. *^^*
등록
자동등록방지 숫자를 순서대로 입력하세요.

댓글수정


글쓰기
검색
번호 제목 이름 날짜 조회
  • 25
    파이썬(Python) 을 활용한, 빗썸(bithumb) 공지사항 가져오기
    마스터욱
    조회수 560   24-11-24 17:18
    마스터욱
    24-11-24 17:18
    560
  • 24
    카카오톡 봇 만들기, 추천 링크
    마스터욱
    조회수 238   23-12-11 04:21
    마스터욱
    23-12-11 04:21
    238
  • 23
    [2] 파이썬 웹서버(webserver), 장고(django) 사용 [2]
    마스터욱
    조회수 355   23-11-05 19:32
    마스터욱
    23-11-05 19:32
    355
  • 22
    파이썬(Python)으로 exe 파일 만들기
    마스터욱
    조회수 283   23-10-24 13:31
    마스터욱
    23-10-24 13:31
    283
  • 21
    카카오톡 봇 만들기
    마스터욱
    조회수 182   23-10-10 17:12
    마스터욱
    23-10-10 17:12
    182
  • 20
    파이썬 간단한 웹뷰 구현
    마스터욱
    조회수 259   23-08-28 05:16
    마스터욱
    23-08-28 05:16
    259
  • 19
    [1] PyQt5 연결이 않되는 문제 [1]
    비회원
    조회수 147   21-09-02 23:25
    비회원
    21-09-02 23:25
    147
  • 18
    Timer(타이머) 사용시 주의사항!
    마스터욱
    조회수 161   18-05-03 00:10
    마스터욱
    18-05-03 00:10
    161
  • 17
    requests 의 성공유무 처리(status_code)
    마스터욱
    조회수 186   18-04-30 22:15
    마스터욱
    18-04-30 22:15
    186
  • 16
    json 익셉션 처리
    마스터욱
    조회수 156   18-04-24 15:28
    마스터욱
    18-04-24 15:28
    156
  • 15
    pyqt5 배포판 만들기 삽질여행기(파이큐티 .ui -> .py 변경작업)
    마스터욱
    조회수 147   18-04-10 15:48
    마스터욱
    18-04-10 15:48
    147
  • 14
    pyinstaller 로 배포판 만들기 옵션
    마스터욱
    조회수 160   18-04-10 13:46
    마스터욱
    18-04-10 13:46
    160
  • 13
    [4] QTableWidget 동적생성/삭제 [4]
    마스터욱
    조회수 211   18-04-03 17:07
    마스터욱
    18-04-03 17:07
    211
  • 12
    동적 변수 생성하기
    마스터욱
    조회수 168   18-04-03 00:18
    마스터욱
    18-04-03 00:18
    168
  • 11
    QT designer 가 실행이 되지 않을때
    마스터욱
    조회수 183   18-04-01 14:05
    마스터욱
    18-04-01 14:05
    183
  • 10
    pyinstaller 로 배포판 만들때, 발생하는 오류 해결방법
    마스터욱
    조회수 169   18-03-30 15:16
    마스터욱
    18-03-30 15:16
    169
  • 9
    pip 로 pyinstaller 설치
    마스터욱
    조회수 122   18-03-30 13:03
    마스터욱
    18-03-30 13:03
    122
  • 8
    from functools import partial 을 이용한 connect 에 파라메터 전달하기
    마스터욱
    조회수 151   18-03-22 00:12
    마스터욱
    18-03-22 00:12
    151
  • 7
    뉴스 자동매매 구현중 중간소스 점검
    마스터욱
    조회수 234   18-03-14 00:03
    마스터욱
    18-03-14 00:03
    234
  • 6
    파이참(PyCharm) 에서 pyqt5 설치방법
    마스터욱
    조회수 179   18-03-12 01:19
    마스터욱
    18-03-12 01:19
    179
글쓰기
검색
  • 1
  • 2
  • 다음

Search

개인정보처리방침
마스터욱. All rights reserved.

Close

0 명 접속중
Time Loading...