썸네일 [python] 블로그 자동 포스팅 프로그램 with 쿠팡 파트너스 - 마무리 GUI만들기 및 exe 파일로 만들기(QT designer) 기존에 구상하였던 기능들은 완성이 되었다. 이제는 사용하기 편하도록 GUI환경을 구축하고 구축한 GUI와 코드를 연결하여 exe 파일로 만들고 다른 로컬 환경에서 잘 돌아가는 것 까지 완성하고 프로젝트를 마무리 하려고 한다. QT designer를 사용하면 드래그앤 드롭으로 간단하게 UI를 구성할 수 있고 함수를 UI컴포넌트들과 연결시켜 간단하게 GUI프로그램을 완성할 수 있다고 하여 처음으로 사용해보게 되었다.os.system("shutdown /s /t 0") 코드를 통해 프로그램 완료시에 종료하기가 체크되어있다면 컴퓨터를 자동으로 종료할 수 있는 기능도 유용할 것 같아 간단히 구현해보았다.GUI 구성은 간단하고 사용하기 쉽도록 정보들을 넣고 오른쪽에 텍스트브라우저에서 진행상황을 표시할 수 있도록 만..
썸네일 [python] 블로그 자동 포스팅 프로그램 with 쿠팡 파트너스 - 6 티스토리 블로그 자동 포스팅 이제는 생성된 글을 토대로 티스토리에 자동 포스팅을 할 차례가 왔다. 첫번째 관문은 티스토리 로그인시 발생하는 2차 인증이었다. 꽤 긴 시간 발목이 잡혀있었지만 카카오톡 계정관리에서 2차 인증을 끄는  의외로 간단한 방법으로 해결할 수 있었다. 로그인에 성공하고 글쓰기 페이지로 이동, 제목 작성까지는 문제 없이 빠르게 진행되었다. 하지만 두번째 문제는 본문 작성이었다. 본문을 작성하기 위해 element를 찾아서 내용을 넣었지만 해당 element를 찾을 수 없다고 했다.  티스토리 글 작성 페이지에서 F12 개발자 도구를 켜면 본문이 iframe 안에 포함되어있는 것을 알 수 있다.driver.switch_to.frame("editor-tistory_ifr") 그래서 위 코드를 통해 포커스를 ifram..
썸네일 [python] 블로그 자동 포스팅 프로그램 with 쿠팡 파트너스 - 5 정보들 바탕으로 AI를 활용하여 글쓰기 지난 포스팅에서 크롤링 한 정보들을 엑셀에 저장하고 중복된 상품을 처리하는 것 까지 처리했었다. 이번 포스팅에서는 저장된 정보를 바탕으로 AI를 활용하여 글을 써서 저장하는 시간을 가져보려고 한다.글을 써줄 생성형 AI는 OpenAI의 API, chatGPT4O mini를 사용하려고 한다. 이 모델이 부담되지 않는 가격 선에서 가장 성능이 좋은 모델이라고 판단하여 선정하게 되었다. 프롬프트 작성 방식은, 상품의 이름과 베스트 리뷰를 주고 이것을 참조하여 부제목 2개를 쓰게한 뒤 부제목의 내용을 채우게 하는 식으로 만들었다. 아래는 "다이어트 간식" 을 검색어로 했을 때 나오는 상품에 대해 AI가 작성한 글이다. AI글의 느낌이 많이 나지만 베스트 리뷰들이 구체적으로 써져있는 덕에 봐줄만한 글이 써진 것을..
썸네일 [python] 블로그 자동 포스팅 프로그램 with 쿠팡 파트너스 - 4 크롤링한 정보 엑셀에 저장하기 지난 포스팅에서 상품의 링크, 리뷰, 대표이미지, 이름을 가져오는 것까지 성공했었다. 나는 이 정보들을 토대로 생성형 AI인 chat-GPT API를 사용해 블로그 글을 생성해서 자동 포스팅 하는 것 까지 계획했었다. 우선 일차적으로 크롤링한 정보들을 엑셀에 저장하고 저장된 정보를 바탕으로 GPT를 통해 2차 가공을 할 계획이다. Python의 openpyxl 라이브러리를 사용하여 크롤링 한 정보들을 저장하였다. 그리고 저장한 정보들을 보며 한 가지 문제를 발견하였다.나는 각 상품의 링크를 먼저 가져오고 그 링크를 타고 들어가 이미지와 리뷰, 제목등을 가져온다.링크를 가져오는 방식은 쿠팡 파트너스 페이지에서 링크 생성 페이지로 들어가서 복사 후 저장, 뒤로가기의 과정을 반복한다.뒤로가기를 했을 때 쿠팡 ..
썸네일 [python] 블로그 자동 포스팅 프로그램 with 쿠팡 파트너스 - 3 상품 리뷰, 제목, 이미지 크롤링 지난 포스팅에서 상품 링크를 불러오는 것 까지 성공 했었다.나의 계획은 상품 링크, 대표 이미지, 베스트 리뷰, 상품 이름을 추출해서 이것들을 참고해 GPT API를 이용해 글을 쓰고 자동 포스팅 하는 것이었다. 하지만 상품 리뷰를 가져오는 것에서 막히고 말았다. 내가 불러온 각 상품의 링크를 타고 들어가서 리뷰를 가져오는 방식으로 상품 링크를 가져오려고 했다. 하지만 링크를 타고 들어가자 컴퓨터가 아닌 모바일 버전이 나오며 앱으로 연결, 쿠폰등의 창들이 뜨며 크롤링을 방해하는 상황을 만났다. 문제는 이 코드에 있었다. 헤더에 가짜 user-agent를 생성해 봇 감지를 회피하기 위한 코드였다.options.add_argument(f"user-agent={UserAgent().random}") 하지만 U..
썸네일 [python] 블로그 자동 포스팅 프로그램 with 쿠팡 파트너스 - 2 상품 링크 크롤링 저번 포스팅에서 자동 로그인까지 완성했었다. 이후에 검색어를 입력해서 쿠팡 랭킹순으로 상품들을 나열하는 것은 어렵지 않았다. 첫번째 관문은 링크 생성을 하는 것이었다. 링크 생성 버튼을 클릭하고 링크 생성 화면으로 들어가서 나의 링크를 받아와야하는데, 링크 생성 버튼을 클릭할 수 없었다.driver.find_element(By.CSS_SELECTOR, ".ant-btn.hover-btn.btn-generate-link").click() 는 엘리먼트를 찾아 물리적인 클릭을 발생시키는 함수인데 마우스를 올려놔야만 링크 생성 버튼이 나타나기 때문에 엘리먼트를 찾을 수 없다는 오류를 뱉어냈다.action.move_to_element(elements = driver.find_elements(By.CSS_SELEC..
썸네일 [python] 블로그 자동 포스팅 프로그램 with 쿠팡 파트너스 - 1 자동로그인 BeautifulSoup, Selenium 최근 취업을 위해 여러 회사들을 알아보던 중 RPA(Robotic Process Automation) 에 관심이 생겼다. 가벼운 예제들을 갖고 공부를 해봤는데, 실생활에 바로 적용할만한 재미난 프로젝트들도 많이 떠오르고 재미를 느끼게 되었다.RPA는 내가 할 프로젝트에서는 좁은 의미로 업무 자동화로 말할 수 있다. 나의 첫 RPA프로젝트로는 쿠팡 파트너스 상품 홍보를 자동 포스팅하여 수수료를 통해 수익을 낼 수 있는 프로그램을 만들기로 했다.입사를 위한 포트폴리오 겸 실제 수익을 내서 나의 용돈을 채울 겸 exe파일로 만들어서 판매도 해볼 겸, etc... 원대한 목표를 갖고 프로젝트를 시작하게 되었다. 나의 계획은 이러했다.쿠팡 파트너스 API를 활용해서 상품들의 url, 사진, 리뷰를 긁어와 엑셀에 ..
[백준] 1158 : 요세푸스 문제 - Python [파이썬] ▼ 문제 설명더보기더보기- 문제요세푸스 문제는 다음과 같다.1번부터 N번까지 N명의 사람이 원을 이루면서 앉아있고, 양의 정수 K(≤ N)가 주어진다. 이제 순서대로 K번째 사람을 제거한다. 한 사람이 제거되면 남은 사람들로 이루어진 원을 따라 이 과정을 계속해 나간다. 이 과정은 N명의 사람이 모두 제거될 때까지 계속된다. 원에서 사람들이 제거되는 순서를 (N, K)-요세푸스 순열이라고 한다. 예를 들어 (7, 3)-요세푸스 순열은 이다.N과 K가 주어지면 (N, K)-요세푸스 순열을 구하는 프로그램을 작성하시오.- 입력첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000)- 출력예제와 같이 요세푸스 순열을 출력한다.- 예제입력7 3- 예제출력풀이1~N 번째 ..
썸네일 [JSP 축구 게시판] FootFoot - 3, 밀린 포스팅... 학기중 전공과목으로 진행하는 프로젝트이다보니, 데드라인이 다가올수록 시간이 많이 안 나서 포스팅을 못 했었다. 종강을 하고서야 부랴부랴 포스팅을 시작해보려고 한다. 우선 생각했던 기능을 다 완성하지는 못했다. 기존 코드에서는 DAO만 따로 만들어두고 뷰페이지와 컨트롤러가 혼재되어있었다. 그런데 이게 무슨일인가... 강의 막바지에 교수님께서 프로젝트는 꼭 MVC모델을 적용하라고 하신다. 그래서 현재 완성된 부분들을 MVC2로 뜯어 고치며 남은 시간을 보냈다. 오늘은 그간 밀린 개발현황에 대해 포스팅 하려고 한다. 현재 완성된 기능들더보기 현재 기능들에 대해 간단히 소개해보았다. 각 기능들의 디테일, 권한 관리나 예외처리등, 내가 해왔던 트러블슈팅 등에 대해서도 자세하게 다루고 싶지만 밀린 것들을 한 번..
썸네일 [JSP 축구 게시판] FootFoot - 2, 데이터베이스, ERD 그려주는 AI 이번 프로젝트에 사용할 데이터베이스는 mysql이고 아래는 ERD이다.dbdiagram.io이라는 사이트를 통해 스키마만 갖고 ERD를 만들 수 있다, chatGPT등 AI에게 스키마를 알려주고 dbdiagram.io에 사용할 형식으로 바꿔달라고 하면 손쉽게 ERD를 완성할 수 있다. dbdiagram.io - Database Relationship Diagrams Design Tool dbdiagram.io 테이블과 컬럼들의 이름이 직관적이어서 앞서 소개했던 프로젝트 주요 기능들과 ERD를 함께 보면 데이터베이스 구조를 쉽게 이해할 수 있을 것 이다. 일반적이지 않은 부분에 대해서 조금 설명을 더하자면 user테이블에 gender나 team테이블에 team_local등을 enum타입으로 설정했다. 이 ..
썸네일 [JSP 축구 게시판] FootFoot - 1, 프로젝트 소개 재학중인 학교에 자유프로젝트 수업이 있어서 주제를 선정해야 했다. 어떤 주제를 선정하면 좋을까 고민하던 중 내가 좋아하는 것과 관련지어 개발해야 흥미를 잃지 않고 재미있게 할 수 있다는 교수님의 조언을 반영해 조기 축구 게시판을 만들기로 했다. 새로운 기술을 많이 시도해 보는 것도 중요하지만 하나를 하더라도 "제대로" 아는 것이 중요하다고 생각하여, 이번 학기에 배우고 있는 JSP를 프로젝트에 사용하기로 결정하였다. 이번 프로젝트를 통해 JSP에 대해 제대로 알고 상황에 맞게, 자유롭게 사용할 수 있는 역량을 기르고 싶다. 또한 혼자서 하는 첫 프로젝트인 만큼 JSP뿐 아닌 프로젝트의 전체적인 진행과 모델링에 관해 알아갈 수 있는 프로젝트가 되었으면 한다. 프로젝트 소개 1. 프로젝트 개요 및 기대 효..
썸네일 [백준] 3986 : 좋은 단어 - Python [파이썬] ▼ 문제 설명더보기- 문제이번 계절학기에 심리학 개론을 수강 중인 평석이는 오늘 자정까지 보고서를 제출해야 한다. 보고서 작성이 너무 지루했던 평석이는 노트북에 엎드려서 꾸벅꾸벅 졸다가 제출 마감 1시간 전에 깨고 말았다. 안타깝게도 자는 동안 키보드가 잘못 눌려서 보고서의 모든 글자가 A와 B로 바뀌어 버렸다! 그래서 평석이는 보고서 작성을 때려치우고 보고서에서 '좋은 단어'나 세보기로 마음 먹었다.평석이는 단어 위로 아치형 곡선을 그어 같은 글자끼리(A는 A끼리, B는 B끼리) 쌍을 짓기로 하였다. 만약 선끼리 교차하지 않으면서 각 글자를 정확히 한 개의 다른 위치에 있는 같은 글자와 짝 지을수 있다면, 그 단어는 '좋은 단어'이다. 평석이가 '좋은 단어' 개수를 세는 것을 도와주자.- 입력첫째 줄에..