본문 바로가기

Python

ParseWEB [1-4] yes24 베스트 셀러 파싱 4번째로 하는 크롤링 및 파싱 강좌입니다. 이번 강좌에서는 yes24에서 제공해주고 있는 베스트 셀러에 해당하는 데이터를 가져와 보려고 합니다. 사전 정보 수집 yes24에서 제공하는 베스트 셀러의 경우 이전 강좌였던 네이버 및 다음 실시간 검색어 파싱과 동일하게 메인 홈페이지 소스에서 검색을 하고 해당하는 부분을 가지고 오는 방식으로도 할 수 있다.하지만 이번 강좌에서는 바로 전 강좌인 네이트 실시간 검색어 파싱과 동일하게 xhr 요청을 캡처해서 진행해보도록 하겠다. 먼저 크롬을 통해 yes24 메인 홈페이지로 이동한 다음 F12를 이용해서 개발자 도구를 켜고 Network 탭으로 이동한 다음 xhr로 필터링을 시작한다.그리고 아래 사진처럼 베스트 셀러 부분에서 '국내도서'를 다시 직접 선택해서 서버로..
ParseWEB [1-3] 네이트 실시간 검색어 파싱 사전 정보 수집 네이트 실시간 검색어의 경우에도 네이버와 동일하게 메인 홈페이지에서 보는 것이 가능하므로 네이트 메인 홈페이지 소스를 보고 어느 부분에 실시간 검색어가 들어가 있는지 확인하여 그 부분의 데이터를 가져오는 방식으로 구현하려 한다. 먼저 크롬을 통해 다음 메인 홈페이지로 이동한 다음 F12를 이용해서 개발자 도구를 켠다. 현재 실시간 검색어 1위에 해당하는 키워드를 Elements 탭에서 검색한다.포스팅 작성 기준으로 보면 국가장학금이 1위로 되어 있으므로 "국가장학금"으로 검색한다. 그러면 아래와 같이 해당 검색어가 표시가 되는 것을 볼 수 있다. 하지만 Sources 창에서 해당 내용을 검색한 결과 해당 내용이 나오지 않는 것을 알 수 있었다. 이를 통해서 네이트의 경우 실시간 검색어에 ..
ParseWEB [1-2] 다음 실시간 검색어 파싱 사전 정보 수집 다음 실시간 검색어의 경우에도 네이버와 동일하게 메인 홈페이지에서 보는 것이 가능하므로 다음 메인 홈페이지 소스를 보고 어느 부분에 실시간 검색어가 들어가 있는지 확인하여 그 부분의 데이터를 가져오는 방식으로 구현하려 한다. 먼저 크롬을 통해 다음 메인 홈페이지로 이동한 다음 F12를 이용해서 개발자 도구를 켠다. 현재 실시간 검색어 1위에 해당하는 키워드를 Elements 탭에서 검색한다.포스팅 작성 기준으로 보면 우윤근이 1위로 되어 있으므로 "우윤근"으로 검색한다. 그러면 아래와 같이 해당 검색어가 표시가 되는 것을 볼 수 있다. 해당 검색어를 포함하는 태그는 a이고 속성은 class에 link_issue가 할당된 것을 볼 수 있다. 그래서 a.link_issue로 검색을 해보면 총..
ParseWEB [1-1] 네이버 실시간 검색어 파싱 사전 정보 수집 네이버 실시간 검색어의 경우 네이버 메인 홈페이지에서 보는 것이 가능하므로 네이버 메인 홈페이지 소스를 보고 어느 부분에 실시간 검색어가 들어가 있는지 확인하여 그 부분의 데이터를 가져오는 방식으로 구현하려 한다. 먼저 크롬을 통해 네이버 메인 홈페이지로 이동한 다음 F12를 이용해서 개발자 도구를 켠다. 현재 실시간 검색어 1위에 해당하는 키워드를 Elements 탭에서 검색한다.포스팅 작성 기준으로 보면 황교익이 1위로 되어 있으므로 "황교익"으로 검색한다. 그러면 아래와 같이 해당 검색어가 표시가 되는 것을 볼 수 있다. 해당 검색어를 포함하는 태그는 span이고 속성은 class에 ah_k가 할당된 것을 볼 수 있다. 그래서 span.ah_k로 검색을 해보면 총 41개의 태그가 검..
ParseWEB [0] 프로젝트 개요 프로젝트 목적 해당 프로젝트는 크몽과 같은 외주 사이트에서 영감을 얻어서 진행할 프로젝트다.크롤링이나 파싱으로 검색을 해보면 5,000원부터 시작해서 300,000원 이상까지 다양한 가격대로 웹 크롤링 및 파싱기를 판매하고 있는 것을 볼 수 있었다. 다른 사람들이 파싱기를 구현할 때 어떻게 구현했는지는 구매를 해보지 않았으므로 알지 못한다. 내가 파싱기를 구현한다고 하면 기본적인 UI와 자주 사용하는 기능(브루트포스 등)을 구현하여 프로그램의 틀은 동일하게 유지를 시킨다. 그리고 사이트 파싱 로직만 사이트 별로 제작해둔다면 해당 파일을 불러오는 방식으로 파싱기를 동작시킬 수 있지 않을까라는 생각에서 출발하였다. 이렇게 하면 기본 프로그램과 간단한 파싱 예제를 포함해서 판매를 하고 구매자가 요구하는 파싱기..
클립보드 텍스트 데이터 가져오기 외부 모듈을 따로 설치하지 않고 클립보드에 저장된 텍스트 데이터를 가져오는 방법이다. 물론 윈도우에 기본으로 내장되어 있는 기능인 "캡처 도구"를 이용해서 클립보드에 이미지를 복사했을 경우에는 Pillow 모듈을 설치하여 사용해야 한다. 코드는 아래와 같고 클립보드가 비어있을 경우에는 클립보드가 비어있다고 알려준다. from tkinter import Tk from _tkinter import TclError def get_clipboard(): root = Tk() root.withdraw() result = None try: result = root.clipboard_get() except TclError as e: print('클립보드 데이터가 비어있습니다.') return result val = ..
일정 길이의 랜덤 문자열 생성하기 파이썬을 이용해서 일정 길이에 해당하는 랜덤 문자열을 생성하는 코드입니다. 여기서 len에는 원하는 문자열의 길이를 int형으로, characters 부분은 랜덤 문자열을 생성하는데 사용하는 문자들을 리스트 혹은 문자열 형태로 주시면 됩니다. import random def rand_str(len, characters): return "".join([random.choice(characters) for _ in range(len)]) 소스코드에도 있는 것처럼 random 모듈을 import를 해야 사용이 가능합니다. 코드에 대한 간략한 설명을 하자면 len에 해당하는 만큼 characters의 원소를 추출해서 (수학적인 용어로는 복원추출) 리스트를 만들고, 그것을 join 메소드를 이용해서 이어 붙이는 ..
일정 시간마다 실행하기 Python을 이용해서 일정 시간마다 특정 작업을 반복할 수 있는 skeleton 코드이다. 아래 코드에서 print("Hello, World") 부분을 지우고 원하는 코드를 입력하면 된다. 응용 방법의 경우에는 매우 많은데, 일정 시간마다 글을 작성하도록 하는 봇을 만든다거나 혹은 주식과 같이 일정시간마다 바뀌는 값의 데이터를 저장하는데 쓰일 수 있다. import threading end = False def execute_func(second=1.0): global end if end: return # TODO print("Hello, World!") threading.Timer(second, execute_func, [second]).start() execute_func(2.0) 참고로 계속 돌아..