Selenium을 활용한 동적 웹 스크래핑 기술

동적 콘텐츠 수집을 위한 Selenium 활용법 Selenium은 주로 자동화 테스트에 사용되지만, JavaScript 기반으로 동적으로 렌더링되는 웹페이지를 크롤링할 때 매우 유용한 도구입니다. 이 방식은 화면에 실제로 표시되는 내용을 그대로 추출할 수 있어, 정적인 HTML 파싱만으로는 접근하기 어려운 사이트에서도 데이터를 효과적으로 수집할 수 있습니다. 사전 준비 Chrome ...

8월 6일 21:06에 게시됨

파이썬 파일 및 디렉토리 관리를 위한 핵심 라이브러리 활용법

os: 운영체제 상호작용 및 경로 관리 파이썬의 os 모듈은 운영체제와 상호작용하며 파일 시스템을 제어하는 가장 기본적인 도구입니다. 경로 병합, 디렉토리 생성 및 삭제, 파일 상태 확인 등 로우레벨 작업을 수행할 때 유용합니다. import os # 운영체제 이름 확인 (posix, nt 등) print(f"OS Type: {os.name}") # 현재 작업 디렉토리 확인 current_dir = os.getcwd() ...

8월 6일 14:03에 게시됨

Briefcase를 활용한 외부 바이너리의 OS별 배포 패키지 생성 가이드

Python 생태계의 패키징 도구인 Briefcase는 직접 관리하지 않는 외부 빌드 결과물(Artifacts)을 가져와 각 운영체제에 최적화된 설치 프로그램으로 변환하는 기능을 제공합니다. 이 방식은 PyInstaller나 py2app 등 다른 도구로 먼저 빌드된 애플리케이션을 MSI, DMG, DEB와 같은 공식 배포 형식으로 래핑할 때 매우 유용합니다. 외부 애플리케이션 패키징의 핵심 개념 ...

8월 6일 13:58에 게시됨

Python 기반 Selenium 및 Unittest를 활용한 POM 패턴 자동화 테스트 프레임워크 구축

프레임워크 아키텍처 및 디렉토리 구조 UI 자동화 테스트의 유지보수성과 재사용성을 높이기 위해서는 체계적인 프레임워크 구축이 필수적입니다. 본 가이드에서는 Page Object Model(POM) 디자인 패턴을 적용하여 Selenium과 Unittest 기반의 자동화 테스트 프레임워크를 설계하는 방법을 다룹니다. 프로젝트의 표준 디렉토리 구조는 다음과 같이 구성합니다. ...

8월 6일 07:10에 게시됨

Python IDNA 인코딩 취약점을 활용한 URL 필터링 우회와 SSRF 분석

Python의 표준 라이브러리인 urllib.parse를 활용한 URL 파싱 과정에서 발생할 수 있는 보안 취약점은 상당히 고전적이면서도 강력합니다. 특히 IDNA(Internationalizing Domain Names in Applications) 인코딩 처리 과정에서 특정 유니코드 문자가 ASCII 문자로 변환되는 특성을 이용하면, 서버 측의 URL 필터링 로직을 무력화할 수 있습니다. SUCTF 2019의 'Pythonginx' ...

8월 4일 16:15에 게시됨

루고 P15440 문제 해설

루고 문제에 대한 제 해법입니다. 문제의 핵심은 신호등의 수가 2025개라는 점에서 출발하며, 이때 시간 복잡도가 O(n^2)보다 작은 동적 계획법(DP)을 고려해야 합니다. 각 조작 후 불이 켜진 횟수와 초기 상태 간의 차이를 상태로 설정하면 편리합니다. 첫 번째 조작 후 상태는 0으로 시작합니다. 여기서 dp[i][j]는 (i+1)번째 조작 후 상태 j를 가질 경우의 수를 나타냅 ...

8월 3일 16:20에 게시됨

파이썬에서의 다형성

객체 지향 프로그래밍에서 클래스는 상속 관계를 가질 수 있으며, 자식 클래스 타입의 객체는 부모 클래스 타입으로 간주될 수 있습니다. 이때 부모 클래스에 정의된 메서드가 자식 클래스에서 재정의되었다면, 해당 메서드를 호출했을 때 객체의 실제 타입에 따라 다른 동작을 수행하게 됩니다. 이러한 특성을 다형성(Polymorphism)이라고 합니다. 예를 들어, Human이 ...

8월 3일 12:39에 게시됨

Selenium을 활용한 웹 요청, 응답 및 WebSocket 데이터 캡처

Selenium으로 웹 또는 ElectronJS/Cef 기반 애플리케이션을 테스트할 때, 특정 요소 조작 후 발생하는 네트워크 요청과 그 파라미터가 올바른지 확인해야 하는 경우가 있습니다. 이러한 필요성을 충족하기 위해 Chrome의 성능 로그를 활성화하고 driver.get_log("performance")를 사용하여 요청 정보를 확인할 수 있습니다. 이 과정에서 네트워크 관련 로그를 필터링하고, ...

8월 3일 08:10에 게시됨

Scrapy CrawlSpider 기반 자동 페이지 탐색 및 크롤링 구현

CrawlSpider 클래스 개요 CrawlSpider는 Scrapy의 기본 Spider 클래스를 상속받아 확장된 클래스입니다. 기본 Spider는 start_urls에 정의된 초기 URL만 크롤링하는 데 적합하지만, CrawlSpider는 추출된 링크를 자동으로 따라가며 탐색하는 규칙(Rule) 기반 메커니즘을 제공합니다. 대규모 웹사이트나 페이지네이션이 있는 사이트를 크롤링할 때 매우 효율적입니다. 아 ...

8월 3일 04:47에 게시됨

NumPy 핵심 정리: 배열 생성, 조작, 연산 가이드

1. NumPy 배열(ndarray) 기본 구조 NumPy 배열은 ndarray라고 불리는 다차원 배열 객체입니다. 다음과 같은 두 부분으로 구성됩니다: 실제 데이터 데이터를 설명하는 메타데이터 (차원, 모양, 데이터 타입 등) 2. 배열의 주요 속성 import numpy as np # 3차원 배열 생성 data = np.array([ [[1, 2, 3, 4, 5, 6, 7], [1, 2, 3, 4, 5, 6, 7], [1, 2, 3, 4, 5, 6, 7] ...

8월 1일 16:32에 게시됨