X = int(input()) # 입력값 X# 그룹 번호 찾기
group = 1
while X > group * (group + 1) // 2:
group += 1
# 해당 그룹에서의 위치
start_of_group = (group - 1) * group // 2 + 1
position_in_group = X - start_of_group
# 분수 계산if group % 2 == 0: # 짝수 그룹
numerator = 1 + position_in_group
denominator = group - position_in_group
else: # 홀수 그룹
numerator = group - position_in_group
denominator = 1 + position_in_group
print(f"{numerator}/{denominator}")
웹 크롤링은 인터넷 상의 데이터를 자동으로 수집하고 분석하는 작업으로, 데이터 분석, 연구, 비즈니스 인사이트 등에 활용될 수 있습니다.
특히 Python은 다양한 라이브러리와 커뮤니티의 지원 덕분에 웹 크롤링을 수행하기에 최적의 언어로 꼽힙니다.
Python을 사용해 웹 크롤링을 시작하는 방법과 핵심 기술을 다루어보겠습니다.
1. 웹 크롤링의 기본 개념
웹 크롤링이란?
웹 크롤링은 프로그램이 웹사이트를 방문해 특정 정보를 추출하는 과정을 의미합니다.
흔히 사용되는 사례로는 상품 가격 비교, 뉴스 데이터 수집, 소셜 미디어 분석 등이 있습니다.
웹 크롤링의 작동 원리
웹 크롤러는 다음과 같은 과정을 따릅니다:
HTTP 요청 보내기: URL을 통해 서버에 요청을 보냅니다.
HTML 응답 받기: 서버로부터 HTML 문서를 수신합니다.
데이터 파싱: HTML 문서에서 원하는 데이터를 추출합니다.
저장: 추출한 데이터를 CSV, 데이터베이스 등에 저장합니다.
2. Python의 주요 웹 크롤링 도구
1) requests
requests는 HTTP 요청을 보내기 위한 라이브러리입니다. 웹페이지에 접속하여 HTML 문서를 가져오는 데 사용됩니다.
import requests
url = 'https://example.com'
response = requests.get(url)
if response.status_code == 200:
print(response.text) # HTML 내용 출력
2) BeautifulSoup
BeautifulSoup는 HTML 파싱을 돕는 라이브러리로, 특정 데이터 추출에 유용합니다.
from bs4 import BeautifulSoup
html = "<html><body><h1>안녕하세요</h1></body></html>"
soup = BeautifulSoup(html, 'html.parser')
print(soup.h1.text) # "안녕하세요" 출력
3) Selenium
동적인 웹사이트를 크롤링할 때 사용되는 브라우저 자동화 도구입니다. 자바스크립트를 통해 생성된 데이터를 처리할 수 있습니다.
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://example.com')
print(driver.page_source) # 렌더링된 HTML
driver.quit()
Python에서변수는 데이터를 저장하는 이름입니다. 변수는 값을 할당하고, 그 값을 나중에 다시 사용할 수 있습니다. Python은 변수를 선언할 때 타입을 명시할 필요가 없으며, 변수가 값을 저장하는 순간 타입이 자동으로 정해집니다.
변수 선언과 데이터 타입
x = 10 # 정수형
y = 3.14 # 실수형
name = "Jee"# 문자열형
is_active = True # 불리언형 (True 또는 False)
변수 출력하기
x = 10
print(x) # 10
2. 연산자
산술 연산자
산술 연산자는 숫자 값을 다룰 때 사용됩니다.
a = 10
b = 5
print(a + b) # 덧셈: 15print(a - b) # 뺄셈: 5print(a * b) # 곱셈: 50print(a / b) # 나눗셈: 2.0print(a // b) # 몫: 2print(a % b) # 나머지: 0print(a ** b) # 거듭제곱: 100000
비교 연산자
비교 연산자는 두 값을 비교하고, 그 결과로 True 또는 False를 반환합니다.
a = 10
b = 5
print(a == b) # 같다: Falseprint(a != b) # 같지 않다: Trueprint(a > b) # a가 b보다 크다: Trueprint(a < b) # a가 b보다 작다: Falseprint(a >= b) # a가 b보다 크거나 같다: Trueprint(a <= b) # a가 b보다 작거나 같다: False
논리 연산자
논리 연산자는 두 개 이상의 조건을 결합할 때 사용됩니다.
x = True
y = False
print(x and y) # 논리곱 (AND): Falseprint(x or y) # 논리합 (OR): Trueprint(not x) # 논리 부정 (NOT): False
3. 조건문
조건문은 특정 조건에 따라 프로그램 흐름을 제어할 수 있게 해줍니다.
Python에서 조건문은 if, elif, else를 사용하여 작성합니다.
age = 16
if age >= 18:
print("성인입니다.")
elif age >= 13:
print("청소년입니다.")
else:
print("어린이입니다.")
4. 반복문
반복문은 어떤 코드를 반복적으로 실행하는 데 사용됩니다.
Python에서는 for문과 while문을 사용하여 반복문을 작성할 수 있습니다.
# for문for i in range(5): # 0부터 4까지 반복print(i)
# while문
count = 0
while count < 5:
print(count)
count += 1 # count 값 증가