본문 바로가기

전체 글40

셀레니움 크롬 프로필 쓰는 방법/ 유튜브 네이버 로그인 없이 자동화 하는법 셀레니움으로 크롤링 작업을 하다보면 네이버, 다음이나 유튜브등 로그인이 필요할때가 가끔 있습니다. 근데 로그인하는걸 코드에 집어넣는건 실행할때마다 로그인해야해서 오래걸리고, 로그인하는것도 어렵다는 단점이 있어요. 이럴때 쓸수있는 방법이 크롬 프로필을 사용하는것 입니다. 셀레니움을 아무 옵션없이 실행하면 매 실행시마다 --user-data-dir 경로가 바뀌기 때문에 방문 기록이나 쿠키같은 기록이 매번 저장되지않고 초기화 되지만, 코드에서 실행할때 user-data-dir을 한곳으로 지정해주면 실행시마다 그곳에 기록과 쿠키를 저장하고 참조하기 때문에 매번 새로 로그인할 필요가 없습니다. 또한 셀레니움으로 로그인하는게 어려운 사이트들은 셀레니움이 참조하는 user-data-dir 폴더를 직접 크롬으로 연 다.. 2022. 8. 2.
백준 2644번 촌수계산 파이썬 풀이 사실 문제를 봤을때 촌수를 계산하라지만 노드간의 부모가 하나뿐인 전형적인 그래프라서 bfs를 돌리면 풀수 있겠단 생각이 들었어요 근데 이것이 코딩테스트다에서 find_parent를 이용해 푸는 문제를 봤던 생각이 나서 처음엔 부모 경로를 찾아서 만나는 경로의 거리를 찾는식으로 작성했었는데 n = int(input()) a, b = map(int, input().split()) d = [i for i in range(n + 1)] for _ in range(int(input())): x, y = map(int, input().split()) d[y] = x def findParent(n, depth, path): if n == d[n]: return n, depth path.append(n) return .. 2021. 3. 19.
백준 1094번 막대기 파이썬 풀이 처음 문제를 보고 구현하는 방법이 그대로 적혀있길래 쓰인대로 구현해서 통과했었는데, 1. 가지고 있는 막대 중 길이가 가장 짧은 것을 절반으로 자른다. 이 부분을 가장 짧은걸 자르라길래 우선순위 큐를 이용해서 구현했었습니다 import heapq target = int(input()) heap = [64] while sum(heap) != target: splited = heapq.heappop(heap) // 2 if splited < 1: continue heapq.heappush(heap, splited) if not target < sum(heap): heapq.heappush(heap, splited) print(len(heap)) 그래서 이렇게 코드를 짜서 통과했는데 코드를 보니까 어차피 힙에.. 2021. 3. 13.
백준 1292번 쉽게 푸는 문제 파이썬 풀이 이름 그대로 단순하게 반복을 돌면서 수열을 진짜로 만든후에 입력된 A부터 B구간을 수열에서 잘라 합을구하면 됩니다 구현하는데는 3가지 방법이 있었습니다 1. 1부터 45까지 더하면 B의 최대범위인 1000을 넘는 1035이기 때문에 반복문을 무조건 45번 돌아서 모든 수열을 만드는 방법 2. 반복문을 돌면서 수열을 만들때마다 수열의 길이를 체크해 B를 넘어가면 종료하는 방법 3. 제너레이터 함수를 만든 후에 itertools에 있는 islice함수를 사용해 원하는 구간만 잘라 더하는방법 만약에 3번으로 푼다면 코드는 이렇게 나오는데 from collections import deque from itertools import count, islice def sequence(): que = deque() c.. 2021. 3. 12.