웹 크롤링(Web Crawling)은 웹 사이트를 자동으로 서치하고 데이터를 수집하는 프로세스를 뜻합니다. 그리고 이 웹 크롤링은 파이썬이 강점을 가지고 있습니다. 파이썬이 웹 크롤링에 필요한 여러 가지 라이브러리와 풍부한 생태계를 갖추고 있기 때문입니다. 그중에서도 requests와 BeautifulSoup 라이브러리를 많이 사용하는데요. 이번 포스팅에서는 이 라이브러리를 사용하여 크롤링하는 방법에 대해 알아보도록 하겠습니다. 파이썬에서 웹 크롤링 하는 법 라이브러리 다운로드(requests, beautifulsoup) 일반적으로 파이썬 웹 크롤링은 requests 라이브러리를 사용하여 웹 페이지의 HTML을 가지고 오고, beautifulsoup를 사용하여 HTML코드를 사용하기 쉽게 나눠주는 파싱이..
데이터를 효율적으로 관리하기 위해 우리는 데이터베이스를 사용합니다. 하지만 간단한 프로그램에서 별도의 데이터베이스를 연결하는 것이 번거로운 작업일 수 있겠죠. 이럴 때는 파이썬에서 기본적으로 제공하는 SQLite3 모듈을 사용하면 별도의 DB연동 없이 데이터베이스를 사용할 수 있는데요. SQLite는 파이썬에서 제공하는 데이터베이스 라이브러리로 경량이면서 별도의 서버가 필요 없이 사용할 수 있는 내장형 데이터베이스 엔진으로 가볍게 사용하기에 좋습니다. 파이썬 SQLite3 모듈 사용법 SQLite 연결하기 import sqlite3 # SQLite 연결 객체 생성 con1 = sqlite3.connect('test.db') # 파일 DB접속 con2 = sqlite3.connect(':memory:') ..
컴퓨터에서 소수는 어떻게 계산할 수 있을까요? 컴퓨터는 숫자를 이진법으로 표현하기 때문에 먼저 10진법의 소수를 이진법으로 변환한 뒤 연산을 해야 합니다. 이 과정에서 대부분의 소수는 오차가 발생하게 되는데요. 왜냐하면 십진법의 소수를 2의 음의 제곱으로 이진법으로 변환해주어야 하는데 많은 소수들이 완벽하게 변환될 수 없기 때문입니다. 무한소수가 되어버리는 경우들이 상당히 많습니다. 또한 무한소수는 변수에 저장될 수 없습니다. 메모리의 크기에 한계가 있기 때문입니다. 그래서 근사값으로 소수를 저장합니다. 메모리가 허용하는 범위 내에서 소수를 최대한 저장하고 끝의 자리에서 반올림을 해서 저장하는 것입니다. 이 과정에서도 불가피하게 오차가 발생합니다. 예를 들자면 0.1은 이진수로 정확히 표현되지 않아서 근..
프로그래밍에서 유의미한 데이터가 생성되었다면 이것을 어딘가에 기록해두어야 합니다. DB를 사용하면 가장 좋겠지만 간단한 데이터들은 DB를 사용하지 않고 파일 형태(ex : txt 파일)로 어딘가에 저장해 뒀다가 사용할 수도 있겠죠. 이번 포스팅에서는 파이썬에서 파일 입출력 하는 방법에 대해 알아보도록 하겠습니다. ※ 파일 입출력이란 로컬 파일의 데이터를 읽거나 반대로 파일에 데이터를 쓰는 작업을 뜻하며 쉽게 메모장이나 바이너리 파일에 텍스트를 넣거나 불러오는 과정을 뜻한다고 생각하시면 되겠습니다. 파일 열기와 닫기(open, close) # 파일 열기 # 변수명 = open("파일경로/파일이름.txt", "모드") new_file = open("sample.txt", "w") # 파일 닫기 new_fil..
클래스의 주요 특징 중 하나는 바로 '상속'이 된다는 점입니다. 부모 클래스를 자식이 상속받으면 별도의 정의 없이 부모 클래스의 속성과 메서드를 자식 클래스에서 재사용할 수 있습니다. 이번 포스팅에서는 상속을 받으면 얻는 이점과 파이썬에서 클래스를 상속하는 방법에 대해 알아보도록 하겠습니다. 클래스 상속 시 얻는 이점들 코드 재사용 : 상속을 통해 부모 클래스의 속성과 메서드를 자식 클래스에서 그대로 재사용할 수 있습니다. 이를 통하여 중복된 코드를 피할 수 있고 소스코드 유지보수가 쉬워집니다. 확장성 : 자식 클래스는 부모 클래스의 기능을 확장하거나 변경할 수 있습니다. 자식 클래스에 새로운 메서드를 추가하거나 부모 클래스의 메서드를 오버라이드하여 원하는 동작을 재정의할 수 있습니다. 다형성 : 상속을..
객체지향 언어들의 특징은 클래스를 사용할 수 있다는 것입니다. 클래스는 객체 지향 프로그래밍(Object-Oriented Programming, OOP)의 핵심 개념으로, 코드를 구조화, 모듈화 하여 유지보수성을 향상하고 코드 재사용을 촉진하는 등 다양한 장점들을 제공합니다. 아마 클래스를 사용함에 따라 얻는 장점은 익히 알고 계시겠지만 모르는 분들을 위해서 간략한 예시를 들어보겠습니다. 쿠키 틀 -> 클래스(class) 쿠키 틀을 사용하여 만들어진 쿠키 -> 객체(object) 쿠키를 무한정 생성해야한다고 가정해 보겠습니다. 그럼 일일이 쿠키들을 만들어줘야 할까요? 수제 쿠키보다는 공장에서 찍어내는 쿠키가 훨씬 효율적이지 않을까요? 클래스를 사용하면 공장식으로 쿠키들을 찍어낼 수 있습니다. 쿠키 틀은 ..
람다식(lambda expression) , 람다함수(lambda function)라는 용어를 들어보셨나요? 이 용어들은 익명 함수(anonymous function)를 표현하는 방법으로 익명 함수는 이름이 없는 함수를 뜻합니다. 즉, 함수를 정의할 때 함수의 이름을 명시적으로 지정하지 않고, 필요한 매개변수와 함수 본문만을 사용하여 함수를 생성하는 것을 의미합니다. 특정 기능을 수행하는 함수들을 한 줄로 작성이 가능하기 때문에 주로 간단한 작업을 수행하는 함수나 일회성으로 사용되는 함수를 정의할 때 사용합니다. 람다식 특징 람다식은 이름이 없는 익명 함수로 정의됩니다. 주로 한 줄로 간단한 연산을 수행하는 함수를 정의할 때 사용됩니다. 람다식은 변수에 할당하거나 다른 함수(map, filter, sor..
함수(function)는 어떠한 목적의 작업을 수행하기 위해 독립적으로 설계된 코드의 집합으로 정의할 수 있겠습니다. 이렇게 특정 코드를 묶어 하나의 함수로 사용하면 계속 재사용할 수 있기 때문에 반복적인 프로그래밍을 피할 수 있습니다. 또한 이렇게 함수를 통해 캡슐화를 진행하게 되면 유지보수 및 코드 가독성측면에서도 유리합니다. 파이썬에서는 def 라는 키워드로 함수를 정의할 수 있는데요. 이번 포스팅에서는 파이썬에서 함수를 사용하는 방법에 대해 알아보도록 하겠습니다. 파이썬 함수(function) 사용법 - 기초 함수 정의하기 #def 함수이름(매개변수1, 매개변수2, ...): # 함수 실행할 코드 # return 반환값 def add(a, b): result = a + b return result..
게임에서 보면 무작위 확률, 무작위 아이템과 같은 "무작위"라는 용어가 많이 나옵니다. 그렇다면 우리는 이 무작위를 어떻게 구현할 수 있을까요? 프로그래밍에서는 무작위, 즉 예측할 수 없는 값을 생성하는데 임의의 숫자값 난수를 사용합니다. 파이썬에서 난수를 생성하려면 파이썬의 기본 라이브러리인 random 모듈을 사용하는데요. random 모듈은 다양한 난수 생성 함수를 제공하여 다양한 유형의 난수를 생성할 수 있습니다. 파이썬 난수 사용법 특정 범위의 난수 생성 - randint(x, y) import random random_integer = random.randint(1, 10) print(random_integer) 결과 : 9 특정 범위에서 임의의 정수값을 추출하려면 randint() 메서드를 ..
한 남자와 여자가 사랑에 빠졌습니다. 사귀기로 한 날을 기점으로 100일 후, 3달 뒤, 1년 뒤를 기념일로 지정하기로 했습니다. 파이썬에서는 이런 상황에서 어떻게 날짜를 특정할 수 있을까요? 이번 포스팅에서는 특정 날짜를 기준으로 이전 날짜, 이후 날짜를 계산하는 방법에 대해서 알아보도록 하겠습니다. timedelta 객체 사용 (n일 뒤, n일 전 계산) from datetime import datetime, timedelta today = datetime.today() day1 = timedelta(days=100) # 100일 뒤 day2 = timedelta(days=30*2) # 2달 뒤 day3 = timedelta(days=365*3) # 3년 뒤 print("현재 날짜:", today) ..
프로그래밍을 하다 보면 두 개의 날짜를 비교해야 하는 경우들이 종종 생기게 됩니다. 파이썬에서는 주로 datetime 모듈을 사용하여 두 날짜를 비교하게 되는데요. 이번 포스팅에서는 두 개의 날짜를 비교하는 방법에 대해 알아보도록 하겠습니다. 파이썬에서 두 날짜를 비교하는 방법 오늘 날짜와 특정 날짜의 비교 from datetime import datetime today = datetime.today() d_day = datetime(2020, 1, 1) if today d_day: print("오늘은 지정된 날짜보다 이후입니다.") else: print("오늘과 지정된 날짜가 같습니다.") 아마 빈도수가 가장 높..
프로그래밍을 하다 보면 현재 날짜, 현재 시간을 출력해야 하는 경우들이 생기는데요. 예를 들자면 로그를 기록할 때 이 로그가 언제 출력되었을지 기록하기 위해 필요할 수도 있고 특정 로직이 정해진 날짜와 시간에 작업을 수행하도록 예약할 때 현재 날짜와 시간이 필요하는 경우도 있을 수 있겠죠. 이럴 때 현재 날짜와 현재 시간은 어떻게 구해야 할까요? 파이썬에서는 datetime 모듈을 사용하여 현재날짜, 현재시간을 구할 수 있습니다. 이번 포스팅에서 자세히 알아보도록 하겠습니다. 파이썬 현재 날짜, 현재 시간 출력하기 datetime 모듈 사용 import datetime # 현재 날짜와 시간을 가져옵니다. current = datetime.datetime.now() # 현재 날짜와 시간 출력 (년-월-일 ..
π = 3.141592653589793238462643383... 아시다시피 원의 지름에 대한 둘레의 비율을 나타내는 원주율 파이(pi)의 값은 순환하지 않는 무한소수(무리수)이기 때문에, 일반적으로는 계산에서는 3.14로 소수점 두 번째까지만 표기하여 사용합니다. 위와 같이 소수점의 자릿수를 지정해주어야 할 때 파이썬에서는 format 함수, round 함수, , f-string를 사용하여 소수점 자릿수를 지정해줄 수 있습니다. 이번 포스팅에서는 이 방법에 대해 알아보겠습니다. 파이썬 소수점 자릿수 지정하기 round() 함수 사용 num = 3.14159265 format_num = round(num, 2) # 소수점 둘째 자리까지 표기 print(format_num) 결과 : 3.14 format(..