파이썬

    [작업 완료] 요기요 매장 정보 크롤링 프로그램

    의뢰 내용 요기요 설정된 지역구 근처 모든 매장 정보 크롤링 프로그램 개발 문의드립니다. 구현 방식 사용자에게 지역구를 입력받거나 혹은 현재 위치를 GPS기반으로 찾아내 위치 설정 하는 로직을 구성했습니다. 요기요 웹 구조 특성상 모든 데이터를 한 번에 받아오는 방식이 아닌 유저가 스크롤하여 페이지를 내릴 때마다 Ajax 요청으로 받아오기에 최하단까지 무한 스크롤링하여 모든 데이터를 받아오는 로직을 구성했습니다. 모든 데이터를 로드하였으니 최상단부터 매장명 및 URL을 받아와 Pandas Data Frame에 저장합니다. 저장된 매장 URL을 모두 직접탐색하여 매장의 상세 정보(매장 전화번호, 매장 상세 위치)를 모두 크롤링하여 Pandas Data Frame에 추가합니다. 모든 데이터가 수집 완료 될 ..

    [작업 완료] 동아일보 뉴스 제목 및 날짜 크롤링 후 워드클라우드 생성 프로그램

    의뢰 내용 동아일보 뉴스 제목과 날짜 크롤링 후 워드클라우드 생성 프로그램 개발 문의드립니다. 구현 방식 selenium 모듈을 이용해 특정 키워드에 대해 10개단위의 게시글을 각 페이지별로 크롤링합니다. 작업 진행 현황을 알리기 위해 현재 몇 개의 기사가 수집되었는지 콘솔창에 표시합니다. 모든 크롤링 작업이 완료되면 어떤 기사가 크롤링되었는지 알리기 위해 기사 제목 및 작성일을 콘솔창에 표시합니다. 이후 수집된 데이터를 바탕으로 워드클라우드를 생성합니다. 작업 결과 크롤링 과정 영상 고객 후기

    [작업 완료] 딥웹 모니터링 및 사고예측 분석 프로그램(OS) 개발

    의뢰 내용 딥웹에서 발생하는 각종 사고 (N번방 등)을 모니터링 및 예측 분석 프로그램 개발 문의드립니다. + 추가 문의 + 완성된 프로그램을 조금 더 보완하여, 일정 주기마다 자주 사용된 단어를 그래프로 표기하여 갱신해주는 프로그램으로 기능을 추가해주세요 구현 방식 딥웹은 일반적인 웹과 다르게 프록시 구성 없이 접근 할 수 없기에 Tor 프로토콜의 HTTP 신호를 송수신 할 수 있는 모듈을 개발하였습니다. 사용자가 지정한 x~y페이지 총 n개의 페이지의 모든 댓글 및 게시글을 수집하여 각 페이지별로 logs.txt 파일을 생성합니다. 생성된 logs.txt파일을 모두 읽어, 문장 및 단어별로 문장 형태소 분석을 통해 나온 결과물만을 SRC/data.txt 파일에 일괄 저장합니다. SRC/data.txt..

    [작업 완료] 엑셀 데이터 SQLite 데이터베이스로 이식 자동화 프로그램

    의뢰 내용 엑셀 데이터를 SQLite 데이터베이스로 자동으로 이식해주는 프로그램 개발 문의드립니다. 구현 방식 Pandas 모듈을 이용해 엑셀 데이터 파일을 Pandas Data Frame으로 변환하였습니다. Pandas Data Frame으로 변환된 데이터를 Row별로 이용해 가져올 데이터만을 가져와 제거하거나 수치 연산 혹은 수정하여야 할 데이터를 가공하였습니다. SQLite3 모듈을 이용해 데이터베이스 테이블 생성 이후 정형화된 데이터를 데이터베이스에 삽입하였습니다. (데이터 컬럼이 150여개+인 상태이기에 데이터 타입을 확인 후 자동으로 삽입 및 테이블 생성 쿼리를 생성해주는 로직을 작성했습니다.) 작업 결과 고객 후기 오늘 개발한 프로그램을 이용해 데이터 시각화를 통해 웹 및 텔레그램 봇으로 추..

    Python 숫자를 랜덤으로 뽑고, 뽑은 숫자가 이미 리스트에 있는지 체크하는 방법

    숫자를 랜덤으로 뽑고, 뽑은 숫자가 이미 리스트에 있는지 체크 한 뒤 더하는 코드입니다. import random # 뽑을 숫자 (1~10까지) pool = list(range(1, 11)) # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 와 동일한 의미의 코드임 numList = [] # numList 리스트 초기화 for num in range(50): # 50번 반복 randNum = random.choice(pool) # randNum 변수에 pool변수에 있는 숫자중 랜덤하게 하나를 골라 저장 if randNum in pool: # randNum(임의로 뽑힌 숫자)이 pool변수 안에 존재하는 요소중 하나와 중복되면 print("중복 값 있음") else: # 그렇지 않으면 numL..

    파이썬 코드 난독화

    개발한 프로그램을 배포하기 이전에 난독화 과정은 반드시 거쳐야한다고 생각한다. 나의 프로그램 역시 나의 자산이기 때문이다. Oxyry Python Obfuscator라는 온라인 파이썬 코드 난독화 툴을 이용해서 간단하게 파이썬 코드를 난독화 할 수 있다. 이 외에도 패커를 이용한 실행파일 패킹 등 여러가지 보호 수단이 있지만, 때때로 제대로 작동하지 않을 경우도 있고 무엇보다도 파이썬의 Pyinstaller와 같은 빌드툴을 이용하게 되면, 리버스 엔지니어링시 다른 언어보다 코드 원문이 더욱 쉽게 노출되기 때문에 난독화 과정은 거의 필수이다.

    파이썬에서 정규식을 이용해 특정 문자와 특정 문자 사이의 문자열을 구하는 방법

    'dsafasdf"helloworld"dsfafads' 위와 같은 문자열이 있다고 가정할 때, 큰따옴표(") 사이의 문자열인 "helloworld"만을 추출하고 싶을 땐 정규식을 사용하면 됩니다. import re string = 'dsafasdf"helloworld"dsfafads' regex = re.compile('{}(.*){}'.format(re.escape('"'), re.escape('"'))) text = regex.findall(string) print(text[0]) 위 코드에서 string 변수에 선언되어있는 문자열이 쓰레기값이 섞여있는 문자열이며, 여기서 "helloworld"라는 문자열만을 추출 하고 싶을 땐 정규식과 정규식을 작성할 수 있는 모듈인 re 모듈을 이용하면 편리하게 ..

    파이썬 Selenium 모듈을 이용한 트위터 팔로워 크롤러 개발

    실행 결과 해당 Python File이 위치한 경로에 export라는 디렉토리가 생성되고 export 디렉토리의 하위 txt파일로 targetName.txt라는 텍스트 파일이 생성되며, 해당 텍스트파일에는 targetName유저의 팔로워들의 ID가 아래와같이 저장됩니다. 개요 구글링을 꽤나 오랫동안 했지만, 파이썬의 Selenium 모듈을 이용하여 특정 유저의 팔로워 리스트를 추출하는 소스코드를 찾을수가 없어 직접 개발하였습니다. Twitter 공식 API센터에서 이와 유사한 내용을 얻을 수 있는 API가 존재하지만 1시간에 15명의 팔로워 리스트만을 반환해주는 API이기때문에 대량의 팔로워 리스트가 필요한 현재 상황에서 사용할 수 없다 판단하여 직접 스크래핑하게되었습니다. 전체 코드는 아래와 같습니다...