본문 바로가기
반응형

Python11

Python 웹 크롤링을 활용한 원자재 가격 데이터 수집 (2) 금과 WTI유 각각의 HistoricalDataAjax 파일의 Request URL은 동일하지만 Form Data를 살펴보면 차이가 나는 부분이 몇 가지 있다. 이 차이가 나는 부분이 바로 서버에서 원자재를 구분하는 요소들이다. 아래에서 header는 원자재 이름 + "선물 내역"으로 고정되어 있고, 원자재 별로 curr_id와 smlID가 다르기 때문에 해당 페이지에서 이 식별자들을 찾아줘야 한다. 추가적으로 원자재 가격 5년 치 데이터를 주별로 받아올 것이기 때문에 st_date는 5년 전 날짜, end_date는 오늘 날짜 그리고 interval_sec는 Weekly로 변경해서 요청을 보낼 것이다. 그 아래 sort 부분은 정렬 방법을 나타내는 것이므로 수정할 필요는 없다. curr_id와 smlI.. 2020. 11. 22.
Python 웹 크롤링을 활용한 원자재 가격 데이터 수집 (1) 개인적으로 원자재 가격과 주가와의 상관관계는 수치적으로 얼마 정도 될까라는 의구심을 항상 품고 있었다. 그 의구심을 해결하고자 파이썬 웹 크롤링을 활용해 원자재 가격 데이터와 주가 데이터를 수집한 뒤 상관관계를 분석해보도록 하겠다. 사실 The World Bank에서 Monthly Price를 선택하면 간편하게 엑셀로 받을 수 있지만 웹 크롤링 연습도 할 겸 해서 한 번 해보았다. BeautifulSoup 라이브러리 설치 먼저 웹 크롤링을 하다 보면 HTML 문서를 태그 단위로 파싱(Parsing)할 필요가 있는데 이때 유용한 파이썬 라이브러리가 BeautifulSoup 라이브러리다. BeautifulSoup는 bs4 패키지를 설치해야 사용할 수 있다. pip install bs4 설치가 완료되면 아래와.. 2020. 11. 22.
[Python] heapq 모듈 사용법 Python에서는 heap 자료구조를 쉽게 구현할 수 있도록 도와주는 내장 heapq 모듈이 존재한다. heap을 직접 구현하는 것보다 훨씬 편리하고 내장되어 있는 모듈이기에 코딩 테스트를 위해서 사용법을 알아두는 것이 도움이 될 것이다. heapq import heapq 여기서 중요한 점은 Python에서 heap은 list 기반으로 동작하고, heap의 root가 가장 작은 값을 가지는 최소 힙(min-heap)이다. heapq.heappush heap에 값을 넣으려면 heappush 메서드를 사용한다. 첫 번째 인수는 heap으로 사용될 list가 들어가고 두 번째 인수로는 넣고자 하는 값이 들어간다. import heapq heap = [] # heap.heappush(list, item) hea.. 2020. 10. 30.
[Python] Input vs. sys.stdin.readline 차이점? Python으로 백준 문제를 풀 때 내장 함수 input()으로 입력을 받으면 시간 초과로 오답처리가 되고, sys 모듈의sys.stdin.readline()으로 입력을 받으면 시간 안에 채점이 되는 경우가 자주 발생한다. 왜 그런지 한 번 알아보자. Python 2.x 일단 Python 2.x 버전에서는 사용자 입력을 처리하기 위한 내장 함수로 input()과 raw_input()이 있다. 이 둘의 차이점은 raw_input()은 입력 값을 무조건 문자열로 받는 반면, input()은 입력으로 들어온 값을 evaluate 해서 그 값에 맞는 자료형으로 초기화한다. 아래 예를 보면 숫자 10을 입력했을 때는 integer type이지만, "python"을 입력했을 때는 string type으로 결과가 나.. 2020. 10. 2.
[Python] Mutable vs. Immutable 차이점? Python을 가지고 재귀 함수를 연습하다가 결과 값이 예상 밖으로 나왔고, 왜 그런 현상이 나왔는지 분석해보았다. 결론적으로 Python에서 변수는 2가지 종류가 있는데 하나는 변할 수 있는 Mutable 변수이고 나머지 하나는 변할 수 없는 Immutable 변수이기 때문이다. def recursive(a, value): a.append(value) if value == 5: print(a) return recursive(a, value + 1) print(a) recursive([], 1) 위와 같은 함수를 구현했을 때 결과 값은 아래와 같이 나온다. # 결과 값 [1, 2, 3, 4, 5] [1, 2, 3, 4, 5] [1, 2, 3, 4, 5] [1, 2, 3, 4, 5] [1, 2, 3, 4,.. 2020. 9. 29.
반응형