python

공부 메모

유튜브 URL로 댓글 목록 크롤링하기

지난 포스팅에서 학습한 것을 응용하여 바로 실습을 해보도록 하겠습니다. 사용자가 유튜브 영상 URL을 입력하면, 해당 영상 댓글들의 닉네임 / 댓글 내용 / 좋아요 수 / 작성 시간대를 가져와서 출력하는 프로그램을 만들어 볼 것 입니다. (결과 미리보기) 아래는 노마드 코더님의 유튜브 영상 중 일부 댓글입니다.  먼저, 크롤링을 위해 필요한 라이브러리를 정의합니다. (해당 라이브러리가 없다면 pip install 명령어로 설치)pip install selenium webdriver_managerfrom selenium import webdriverfrom selenium.webdriver.chrome.service import Servicefrom selenium.webdriver.common.by im..

공부 메모

정적/동적 크롤링 개념 및 실습 진행해보기

웹 개발자가 되려면 크롤링은 어느정도 할 줄 알아야 한다고 생각합니다. 그래서 오늘은 크롤링에 대해 공부해보려고 합니다. 웹 크롤링이란?웹 크롤링(Web Crawling)은 웹 사이트에서 데이터를 자동으로 수집하는 기술을 의미합니다.이를 통해 웹 상의 다양한 데이터를 가져와 가공할 수 있죠.  주요 라이브러리웹 크롤링을 하기 위한 보편적인 라이브러리 몇 가지만 소개하겠습니다.라이브러리기능requests웹 페이지 HTML 가져오기BeautifulSoupHTML을 파싱(분석)하여 원하는 데이터 추출Selenium동적인 웹 사이트(JavaScript 기반) 크롤링pandas크롤링한 데이터를 저장하고 분석하는데 활용scrapy대규모 크롤링을 위한 프레임워크  정적 vs 동적?웹 크롤링은 크게 정적 크롤링과 동적..

코딩테스트 & 문제 풀이

[Python]백준_5086 : 배수와 약수

2023년 3월 2일에 작성됨 https://www.acmicpc.net/problem/5086 5086번: 배수와 약수 각 테스트 케이스마다 첫 번째 숫자가 두 번째 숫자의 약수라면 factor를, 배수라면 multiple을, 둘 다 아니라면 neither를 출력한다. www.acmicpc.net 문제 분석 배수인지, 약수인지, 둘 다 아닌지 if문으로 경우를 나눠서 문제를 해결한다. 소스 코드 (⭕) while (1): a, b = map(int, input().split()) if a == 0 & b == 0: break elif b % a == 0: print("factor") elif a % b == 0: print("multiple") else: print("neither") 코드 분석 1. ..

코딩테스트 & 문제 풀이

[Python]백준_3182 : 한동이는 공부가 하기 싫어!

2023년 1월 20일에 작성됨 https://www.acmicpc.net/problem/3182 3182번: 한동이는 공부가 하기 싫어! H-ALGO 회원인 한동이는 공부하는것을 좋아하지 않는다. 하지만 약삭빠르게도 한동이는 공부도 하지 않으면서 어려운 시험을 통과하고 싶어한다. 그러던 와중 어느 날, 한동이의 동기가 한동이에 www.acmicpc.net 문제 분석 깊이 우선 탐색 dfs를 이용하여 최대한 많은 선배에게 물어보려면 어느 선배한테 물어봐야 하는지 구하는 문제이다. 소스 코드 (⭕) import sys input = sys.stdin.readline n = int(input()) graph = [0] result = [0] for i in range(1, n+1): graph.append(..

코딩테스트 & 문제 풀이

[Python]백준_16173 : 점프왕 쩰리 (Small)

2023년 1월 14일에 작성됨 https://www.acmicpc.net/problem/16173 16173번: 점프왕 쩰리 (Small) 쩰리는 맨 왼쪽 위의 칸에서 출발해 (행, 열)로 나타낸 좌표계로, (1, 1) -> (2, 1) -> (3, 1) -> (3, 3)으로 이동해 게임에서 승리할 수 있다. www.acmicpc.net 문제 분석 너비 우선 탐색 BFS 알고리즘을 이용하여 문제를 풀 수 있다. 소스 코드 (⭕) from collections import deque import sys input = sys.stdin.readline n = int(input()) # 게임 구역의 크기 n 입력 board = [] for _ in range(n): board.append(list(map(i..

코딩테스트 & 문제 풀이

[Python]백준_2562 : 최댓값

2023년 1월 9일에 작성됨 https://www.acmicpc.net/problem/2562 2562번: 최댓값 9개의 서로 다른 자연수가 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 번째 수인지를 구하는 프로그램을 작성하시오. 예를 들어, 서로 다른 9개의 자연수 3, 29, 38, 12, 57, 74, 40, 85, 61 이 주어 www.acmicpc.net 문제 분석 9번 반복문을 돌면서 해당 값이 최댓값인지, 몇 번째 수인지 판단해준다. 소스 코드 (⭕) max = 0 for i in range(9): num = int(input()) if num > max: max = num cnt = i+1 print(max) print(cnt) 코드 분석 for문으로 9번 반복을 해주고, 입력받은..

코딩테스트 & 문제 풀이

[Python]백준_10807 : 개수 세기

2023년 1월 4일에 작성됨 https://www.acmicpc.net/problem/10807 10807번: 개수 세기 첫째 줄에 정수의 개수 N(1 ≤ N ≤ 100)이 주어진다. 둘째 줄에는 정수가 공백으로 구분되어져있다. 셋째 줄에는 찾으려고 하는 정수 v가 주어진다. 입력으로 주어지는 정수와 v는 -100보다 크거 www.acmicpc.net 문제 분석 둘째 줄의 N개의 정수들을 각각 리스트에 넣어주고, count() 함수를 사용하여 리스트 안의 원하는 요소의 개수를 세어준다. 소스 코드 (⭕) n = int(input()) nums = [] # list() : 리스트로 변환 가능한 다른 자료형을 리스트로 바꿔준다. nums = list(map(int, input().split(" "))) v..

코딩테스트 & 문제 풀이

[Python]백준_2999 : 비밀 이메일

2023년 1월 3일에 작성됨 https://www.acmicpc.net/problem/2999 2999번: 비밀 이메일 정인이는 원래 "bombonisuuladici"를 보내려고 했다. 이 메시지는 16글자이므로, 정인이는 1*16, 2*8, 4*4 행렬을 선택할 수 있다. R이 가장 큰 것은 4*4이므로, 4*4를 선택한다. 정인이가 만든 행렬은 다음과 www.acmicpc.net 소스 코드 (⭕) str = input() # 문자열 str 입력 len = len(str) # 입력받은 문자열 길이 len x, y = 0, 0 # 행 R개와 열 C개를 구하는 이중 반복문 (R이 커야 됨) for r in range(1, int(len/2)+1): for c in range(r, len+1): if r*..

코딩테스트 & 문제 풀이

[Python]백준_2909 : 캔디 구매

2023년 1월 2일에 작성됨 https://www.acmicpc.net/problem/2909 2909번: 캔디 구매 오늘은 화이트데이이다. 상근이는 여자친구를 위해서 사탕을 사려고 한다. 하지만, 상근이는 독특한 성격을 가지고 있어서, 특정 액면가의 지폐만 가지고 있는다. 또, 거스름돈은 받지 않는다. www.acmicpc.net 문제 분석 일반적으로는 5이상이면 올림, 4이하면 내림하는 사사오입 방식이지만 파이썬에서는 5보다 크면 올리고, 5보다 작으면 내리는 오사오입 방식을 사용한다. 5일 경우, 앞자리가 홀수면 올림, 짝수면 내림한다. 소스 코드 (⭕) c, k = map(int, input().split()) print(int(round(c+0.1, -k))) # round(num, k) 함수..

코딩테스트 & 문제 풀이

[Python]백준_23253 : 자료구조는 정말 최고야

2023년 1월 1일에 작성됨 https://www.acmicpc.net/problem/23253 23253번: 자료구조는 정말 최고야 위 그림처럼 책이 쌓여 있으므로, 첫 번째 더미 - 두 번째 더미 - 첫 번째 더미 - 두 번째 더미 순으로 꺼내면 책 번호순으로 나열할 수 있다. www.acmicpc.net 문제 분석 더미의 교과서 번호가 하나라도 역순이 되는 경우 False가 된다. 입력받은 번호는 더미의 밑에서부터 차례대로 나타낸 것이기 때문에 만약 한 구간이라도 오름차순이 된다면 교과서를 순서대로 꺼낼 수 없으므로 No를 출력한다. 소스 코드 (⭕) import sys input = sys.stdin.readline n, m = map(int, input().split()) check = Tru..