디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

[일반] 기사 검색 프로그램 겨우 다 만들었다

사밀(14.39) 2021.12.05 16:16:47
조회 351 추천 0 댓글 12
														


viewimage.php?id=3da4c42eeadc&no=24b0d769e1d32ca73deb85fa1bd8233c97e79f71135318a7c9f45b6bfb06339248460d71458e3a42ce9b5c2fcd56dbca3e46b9ab76e729c8a7c5016d29117821278a



실행하면 이런 거 뜨는데




viewimage.php?id=3da4c42eeadc&no=24b0d769e1d32ca73deb85fa1bd8233c97e79f71135318a7c9f45b6bfb06339248460d71458e3a42ce9b5c2fcd56dbca3e46b9ab76e772cefc9650372c15783bf1e6



2

여기서 기사 검색 조건들 입력하라는대로 입력하면


밑에 짤 처럼 기사기재일자 / 기사제목 / 하이퍼링크 순서로 쭉 나열된 상태로 엑셀파일 저장되고

os.startfile(~~~) 이걸로 작업 끝나자마자 자동으로 엑셀파일 열리게 해놓음. (근데 사실 엑셀파일 열면 열너비 조정 안 된 상태로 열려서 더블클릭 두 번은 해줘야됨;; 그거 더블클릭 두 번 하는 거 대신 해주는 거 구현해놓는답시고 openpyxl import 하고 코드 한 두 줄 더 넣는 게 효율적인건가 싶기도 하고... 는 사실 핑계이고 그냥 귀찮아서 열너비 조정하는 거 빠르게 구글링 해서 넣을 생각조차 안 듦... 내년에 전체적으로 개선하면서 이것도 보완할 예정)


viewimage.php?id=3da4c42eeadc&no=24b0d769e1d32ca73deb85fa1bd8233c97e79f71135318a7c9f45b6bfb06339248460d71458e3a42ce9b5c2fcd56dbca3e46b9ab76e725c8fdc45038261b78217f7a


3

저 시기쯤에 엔씨 슈퍼개미 기사랑 NFT 관련된 기사 똑같은 거 엄청 올라온 셈 치고는 적당히 쳐낼만한 기사 쳐낸 거 같기도 하고.. 아닌 거 같기도 하고...


원래는 konlpy인가 그걸로 형태소 뽑아서 명사 / 동사 정리한 다음에 유사도 분석 돌리려고 했는데

설치 과정에서 자바 설치하고 환경 구축하라고 하는데 똑같이 해도 안 되길래 포기하고 (어차피 공유목적이라면 제한이 있을 거 같기도 하고)

아쉬운대로 특문 다 제거하고 띄어쓰기 기준으로 분리한 다음에 그걸로 유사도 분석 돌려서 일정 수치 이상 유사하면 삭제하는 식으로 for 문 돌려서 구현함.

좀 생각해보니까 어차피 기사 제목이란 게 명사 위주로만 나열한 게 대부분이니까 일단은 아쉬운대로 이 정도만 되어도 괜찮은 거 같기도 한 듯...

(예: 거래소, 엔씨소프트 '5000억 슈퍼개미' 거래내역 들여다본다. >>> 이거에서 특수문자 다 날리면 거래소 엔씨소프트 5000억 슈퍼개미 거래내역 들여다본다)


근데 노가다로 인간 딥러닝을 통해서 어느 정도 수치가 적당한가 확인해보려니까 진짜 천차만별인 거 같아서 그냥 input() 구현해서 이용자의 선택에 맡기기로 함.


만들고 보니 별 거 아닌데

항상 이런 거 만들면서 느끼는건

뭔가 아이디어 머릿속으로 혼자 그려서 이거 이렇게 이렇게 하면 되겠지? 하고 로직 다 정리된 상태에서 코드 치다보면

진짜 생각지도 못한 부분에서 3~4 시간 이상 그냥 순삭되는 경우가 많은 듯.

기초가 부족하기도 하고 원래 그런건가 싶기도 하고;;;


이것도 겨우 새벽까지 밤새가면서 만들었는데도 자꾸 Key Error 떠서 뭐지 하다가 포기하고 잠들었는데

자고 일어나서 다시 코드 한줄 한줄씩 돌려가면서 확인해보자는 마인드로 천천히 확인해봤는데


pandas에서 인덱스하는 게 그냥 파이썬 고유의 '순서'를 뜻하는 게 아니라 판다스 자체 데이터의 index 번호를 동시에 의미하기도 해서 여기서 계속 에러가 떴던 거였음.

대충 데이터프레임의 5번째 행을 인덱스하고 싶어서 [4]를 뒤에 붙였는데 이게 데이터가 한 번 정리된 상태에서 index 번호가 뒤죽박죽인 상태에서 [4] 이런 식으로 찾아들어가다 보니까 에러가 오지게 떴던 거..


그러면 고유한 위치를 찾아들어가는 식으로 코드를 구현하거나 index를 reset해서 값이든 위치든 상관없이 잘 찾아들어가게끔 dataframe 자체를 정리하는 방법이 있을 거 같은데

당장 index를 reset하는 코드 찾는게 쉬운 거 같아서 바로 구글링 해서 해결하고 이제 됐다 싶어서 돌려보는데


또 되다가 안 되다가 이상하게 꼬이길래


이것저것 또 이유를 파악해보다가 하염없이 시간 보내고..


걍 이럴 바엔 라이브러리를 싹다 지우고 다시 깔아보자는 마인드로, 가상환경에 깔린 관련된 라이브러리 다 지우고 새로 다 설치함.


그렇게 돌리니까 갑자기 가상환경에 openpyxl이 설치 안 되어 있다고 뜨길래 "뭐지 이거 첨 보는 에러코드인데... 원래 pandas 설치할 때 같이 설치하는 거 아닌가" 싶었는데 당장은 원인 해결방법이 너무 명확하니까 openpyxl 설치해서 에러 코드 없이 성공했는데


기존에 위에 짤처럼 하이퍼링크 잘만 달려서 엑셀파일에 구현되던게

갑자기 그냥 텍스트로만 구현되는 거...

사실 링크 복사해서 브라우저 가서 손으로 붙여넣을 거면 이거 만드는 의미 퇴색되니까 어떻게든 또 구현해보려고


pandas랑 openpyxl 버전도 낮춰봤는데 그래도 하이퍼링크가 안 붙여지는 거..


아 시바 뭐지... 왜 되다가 안 되노...

하다가 아까 원래 openpyxl이 없었어도 에러코드 안 떴는데 갑자기 openpyxl 에러코드 뜨는 바람에 설치했다는 사실이 생각나서

이거 혹시 pandas 엔진을 기존에 xlsxwriter인가 그거 쓰다가 어찌어찌 삭제하고 다시 깔고 하면서 openpyxl 쓰도록 바뀌었나? 그래서 openpyxl 없다는 에러코드도 안 뜨다가 갑자기 뜨기 시작한건가?

라는 생각이 들어서 구글링으로 xlsxwriter로 pandas 엔진 바꾸는 거 찾아서 그거 구현하고, xlsxwriter 모듈 설치하고 돌리니까 다시 원래대로 하이퍼링크 붙여진 채로 나옴.


교훈: DataFrame.to_excel(~~.xlsx)를 할 때는 인수로 engine=xlsxwriter를 추가해주면 하이퍼링크 텍스트에는 하이퍼링크가 붙여진 상태로 엑셀파일이 저장된다.

일단 나는 그랬음


이 정도로 삽질하다 보니까 그래도 그럭저럭 내 나름대로 만족할만한 결과물이 나오기는 나온 거 같아서 불편한 마음이 싹 사라짐

기본적으로 jupyter notebook이나 vs code 돌아가는 방식을 몰라서 평소 코드 짤 때는 jupyter notebook으로 짜는데

실행파일로 만들 때는 그거 .py로 내려받은 다음에 vs code에서 적당히 작업해서 바로 프롬프트에서 pyinstaller 돌림

근데 계속 .exe로 만든 다음에 에러코드 확인하고 다시 삭제하고 다시 만들고 에러코드 확인하고 그런 뻘짓 하다가

그냥 명령 프롬프트에서 바로 python 명령어로 .py 실행하면 된다는 걸 몇 시간 전에야 다시 깨닫고 그 때부터는 그나마 에러코드 처리하는데 좀 수월했던 듯...



근데 사실 이것도 최종 완성작은 아닌게,,

특정 조건에서만 '우연히' 코드가 잘 돌아가는 것일 수도 있으니까 여러 조건으로 이리저리 돌려보는데 특정 검색어와 / 특정 기간을 설정했을 때에는 웹스크래핑 하는 단계에서 계산된 로직과 다른 결과물이 떠서 에러코드가 뜨는데 어떤 조건에서 에러 발생하는지만 기록해두고 내년쯤에 체크해보는 걸로....


기사제목이랑 기사 하이퍼링크는 html에서 특정 class에 한 군데에 묶여서 같이 움직이니까 처리하기 쉬운데

기사일자는 동떨어져서 따로 움직이는데다가 고유한 class 이름도 아닌 거 같아서 다른 문자까지 같이 끌고오는 거 if와 elif 등으로 처리하면서 데이터프레임에 집어넣는데 이 과정에서 데이터 개수가 안 맞아서 데이터프레임이 안 만들어지는 오류인 거 같기는 함...

이게 다 beautifulsoup을 날림으로 공부(?)하고 하나도 이해 안 된 상태로 동영상 강의에서 보여준 샘플 코드만 가지고 이리저리 응용하면서 구현한 대가인 듯..

뭔가 그 상황에서도 딱딱 맞춰서 필요한 데이터만 뽑아올 수 있는 방법이 있을 거 같긴 한데..


그리고 만들면서 생각난건데

코스피 / 코스닥 상장사 관련 키워드 같은 경우에는

기사검색일자 설정한 거에 맞게 주가정보도 끌고와서 그래프 쭉 그린 다음에

주가 움직임이 크게 튀는 일자에는 기사 리스트에 따로 표시해 두는 식으로 구현하는 것도 괜찮을 거 같긴 함


그러면 몇 달 동안의 해당 기업 관련 주요 이슈를 수많은 기사 중에서 콕 찝어내는 걸 훨씬 더 효과적이고 효율적으로 할 수 있을 듯.



그리고 엔씨소프트처럼 기사가 좀 많이 뜨는 키워드의 경우에는 데이터 긁어오는 시간과 중복 처리하는 시간이 생각했던 것보다 꽤 오래걸림..

한달 반 정도 조건으로 검색해봤는데 계속 돌아가길래 뭔가 에러가 있나 생각들 정도로..

다 정리하고 나서 저장된 데이터 보니까 400개 좀 넘는 걸로 봐서는 원래는 1000개, 2000개도 훌쩍 넘었을 거 같은데 그런 거 치고는 괜찮은 편이긴 한건가...


근데 이중 for문으로 두개씩 비교해서 유사도가 높으면 아래에 있는 걸 공란으로 만들어놓고 나중에 한 번에 null값 다 날리는 식으로 했는데

처음 유사도 검사할 때 유사도 높은 거 식별되는 즉시 그 행은 날리는 식으로 구현하거나

아니면 if 문으로 null값이 들어가는 경우에는 유사도 계산 안 하고 바로 pass 하는 식으로 구현하면 시간 훌쩍 줄어들긴 할 거 같은데 이것도 일단 내년에 할 예정.



그래도 몇 개월 전에 이런 거 있으면 좋지 않을까 라는 말을 직장에서 주워듣고

5년 이내에는 구현하는 걸로 목표한 셈 치고는

되게 빠르게 만든 셈이니까 좀 뿌듯하긴 함.

만드는 과정이 재미있기도 했고...


갤을 일기장처럼 쓰는 거 같은데 그냥 잡소리라고 생각하셈 ㅋㅋ


끝.


0

고정닉 0

0


추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 말머리 제목 글쓴이 작성일 조회 추천
- 설문 해외에서 겪는 불합리한 대우에 대응 잘 할 것 같은 스타는? 운영자 25/11/03 - -
- AD 저녁 뭐먹지? 오늘의 메뉴 추천! 운영자 25/10/31 - -
1047 🔎질문 씹늅) 셀레늄 질문 [10] ㅇㅇ(59.2) 21.12.13 160 1
1046 🔎질문 흑백사진을 csv파일로 변환하려는데 도움좀 [2] ㅇㅇ(116.120) 21.12.12 167 0
1045 일반 딱지 온 ㅋㅋ [1] 주넹갤로그로 이동합니다. 21.12.12 117 0
1044 🔎질문 프린트는 되는데 플랏이 안되는 이유가 멀까요? [4] 외않돼(221.150) 21.12.12 133 0
1043 🔎질문 matplotlib 그래프 질문이요! [1] 00(58.121) 21.12.12 146 0
1038 🔎질문 응애 뉴비 질문좀 [6] ㅇㅇ(180.66) 21.12.10 185 0
1037 🔎질문 메서드에서 만든 프로퍼티? 질문점.. [4] ㅇㅇ(117.111) 21.12.10 152 0
1036 🔎질문 다음 구경갈 컨텐츠 추천좀 [4] 키메라(1.212) 21.12.10 117 0
1035 🔎질문 독학중인 뉴비 질문점 ㅠㅠ [3] ㅇㅇ(121.172) 21.12.09 173 0
1034 일반 인간딥러닝 On [8] 사밀(223.38) 21.12.09 165 0
1033 일반 이거 님들한텐 3시간 컷 아님? 10만원 드릴께 [6] 11(106.253) 21.12.09 211 0
1032 일반 라이부러리 만드는쉑 = 초보자마을만렙대머리 맞노? [1] 키메라(1.212) 21.12.09 123 0
1031 일반 KoNLpy 설치 다시 도오오오오오전! [8] 사밀(14.39) 21.12.08 155 0
1030 🔎질문 centos7 pyodbc 설치 에러.. [1] ㅇㅇ(175.196) 21.12.08 401 0
1028 🔎질문 혹시 에러 뜰 때 인풋값 체크 하는 방법 있나요 [3] ㅇㅇ(183.101) 21.12.08 123 0
1027 일반 질문 답변하니깐 글삭을 해버리노 ㅋㅋㅋㅋ [4] 라댜갤로그로 이동합니다. 21.12.07 167 0
1026 🔎질문 컴알못 파이썬 진짜 사소한거 질문 [5] ㅇㅇ(183.101) 21.12.07 196 0
1024 🔎질문 from A import * 랑 import A as B랑 합치기 [13] ㅇㅇ(220.76) 21.12.07 184 0
1023 일반 파이썬 코테 수준별 스터디 [1] ㅇㅇ(203.251) 21.12.07 322 0
1022 🔎질문 koNLpy 써보려는데 뭔가 Java 설치하는데서 막히는데 도움 좀.. [4] 사밀(14.39) 21.12.07 350 0
1019 일반 딱지 주넹갤로그로 이동합니다. 21.12.06 112 0
1018 🔎질문 커서를 이동시키지 않고 클릭한 효과를 내려면 어떻게 어떻게 해야되나요? [5] ㅇㅇ(61.102) 21.12.06 207 0
1017 🔎질문 아톰으로 1초단위로 관측된 데이터 읽으려면 어떻게 해야되나요? [2] ㅇㅇ(1.230) 21.12.06 116 0
1016 🔎질문 파이썬 클래스랑 메서드 배우는데 문제 질문좀 받아주세요 [2] ㅇㅇ(124.57) 21.12.06 224 0
1012 🔎질문 디스코드'를' 크롤링하고 싶은데 질문 [4] ㅇㅇ(112.153) 21.12.06 330 0
1011 일반 나도 랜덤 통계내는 프로그램 만들엇음 [1] ㅇㅇ(210.183) 21.12.06 128 0
1010 🔎질문 간단한거 질문좀요.. [4] ㅇㅇ(121.167) 21.12.06 131 0
1007 🔎질문 csv파일을 이용하여 그래프를 그려보고 싶습니다.(제발 도와주세요 제발요 [1] 제발도와주세요(1.231) 21.12.06 209 0
1006 🔎질문 랜덤 숫자 횟수 그래프를 그리기 질문 [5] ㅇㅇ(183.99) 21.12.05 176 0
1005 일반 Programing newbie's 오늘의 thinking 키메라(112.148) 21.12.05 109 0
일반 기사 검색 프로그램 겨우 다 만들었다 [12] 사밀(14.39) 21.12.05 351 0
1001 🔎질문 스타트업쪽으로 창업할려는데 조언좀 [11] (122.46) 21.12.05 289 0
999 🔎질문 Java 기반의 클래스를 쓰는 라이브러리로 뭘 만들면 [4] 사밀(14.39) 21.12.05 141 0
998 🔎질문 cd 명령어가 안먹어 [2] ㅇㅇ(218.51) 21.12.04 140 0
997 일반 오늘은 지난번에 만들어보겠다는 거 약식으로라도 만들어봐야겠다 [1] 사밀(14.39) 21.12.04 121 1
996 일반 며칠동안 출장갔다오고 바쁘기도 해서 간만에 컴터 켰는데 사밀(14.39) 21.12.04 104 0
995 일반 뉴비특) 피드백이 없음 [2] ㅇㅇ(223.39) 21.12.04 162 3
994 🔎질문 파이썬 기초 좀 물어볼게있어.. [6] 파린이(49.164) 21.12.04 218 0
993 🔎질문 형들 리스트 정렬 간단한 질문 있습니다 [7] ㅇㅇ(125.191) 21.12.04 156 0
992 🔎질문 이거 실행하는 법 좀 [4] ㅇㅇ(106.253) 21.12.04 192 0
991 🔎질문 map 쓸 때 내부 함수의 파라미터? 같은건 따로 설정 못하나요? [4] ㅇㅇ(183.101) 21.12.03 137 0
990 🔎질문 파이썬 텍스트 파일 읽을 때 질문! [4] ㅇㅇ(220.116) 21.12.03 138 0
989 일반 하나씩 배울수록 공구통이 커지는 느낌이노? [7] 키메라(112.148) 21.12.03 182 0
988 🔎질문 주피터 노트북에서 모듈안에 있는 변수를 불러낼 때는 어떻게 해야 하나요? [2] dd(180.68) 21.12.02 135 0
987 🔎질문 입문자 과제좀 도와줍셔 [12] ㅇㅇ(58.120) 21.12.02 215 0
986 🔎질문 넘파이 이거 문법 해석 가능한 사람?? [1] ㅇㅇ(14.33) 21.12.02 125 0
985 🔎질문 구글코랩에서 이미지 출력이 안되는데 뭐가 문제일까요 ㅠㅠ [7] ㅇㅇ(175.195) 21.12.02 516 0
984 일반 과제로 프로그램 추천 좀 해달라는 놈들은 [5] SeRA(223.38) 21.12.02 167 0
982 🔎질문 c언어도 vscode로 쓰나요?? [5] ㅇㅇ(106.102) 21.12.02 210 0
981 일반 유튜브 강의보다 보니 타채널에서 댓글 영업 뛰는 사람도 있네 [1] ㅇㅇ(223.38) 21.12.02 138 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2