본문 바로가기

Python/퀀트11

크롤링 실습: 국내 모든 종목 주가 크롤링 1. 수정주가가 필요한 이유- 삼성전자는 2018년 5월 기존의 1주를 50주로 나누는 액면분할을 실시- '265만원'이던 주가가 다음날 50분의 1인 '53,000원'에 거래됨- 이러한 이벤트를 고려하지 않고 주가만 살펴본다면 마치 -98%의 수익률을 기록한 것 처럼 보임- 이를 고려하는 방법은 액면 분할 전 모든 주가를 50으로 나누어 연속성을 갖게 만듦, 이를 '수정주가'라고 함  2. 주가 크롤링# 패키지 불러오기import pymysqlfrom sqlalchemy import create_engineimport pandas as pdfrom datetime import datefrom dateutil.relativedelta import relativedeltaimport requests as .. 2024. 11. 6.
크롤링 실습: 국내 주식 섹터 데이터 크롤링 # 섹터 데이터 크롤링import json import requests as rqimport pandas as pdurl = f'''https://www.wiseindex.com/Index/GetIndexComponets?ceil_yn=0&dt={biz_day}&sec_cd=G10'''data = rq.get(url).json()data_pd = pd.json_normalize(data['list'])# 섹터 정보 크롤링import timeimport jsonimport requests as rqimport pandas as pdfrom tqdm import tqdmsector_code = ['G25', 'G35', 'G50', 'G40', 'G10', 'G20', 'G55', 'G30', 'G15', .. 2024. 11. 6.
크롤링 실습: 국내 주식 티커 데이터 크롤링 # 최근 영업일 크롤링import requests as rqfrom bs4 import BeautifulSoupurl = 'https://finance.naver.com/sise/sise_deposit.naver'data = rq.get(url)data_html = BeautifulSoup(data.content)parse_day = data_html.select_one( 'div.subtop_sise_graph2 > ul.subtop_chart_note > li > span.tah').textparse_day# 날짜 추출import rebiz_day = re.findall('[0-9]+', parse_day)biz_day = ''.join(biz_day)biz_dayimport requests a.. 2024. 11. 5.
문자열 처리를 위한 정규 표현식 1. 정규 표현식 - 정규 표현식(정규식)이란 프로그래밍에서 문자열을 다룰 때 문자열의 일정한 패턴을 표현하는 일종의 형식 언어 - regular expression을 줄여 일반적으로 regex라 표현 - 정규 표현식은 파이썬만의 고유 문법이 아니라 문자열을 처리하는 모든 프로그래밍에서 사용되는 공통 문법 2. 정규 표현식 활용[ '동 기업의 매출액은 전년 대비 29.2% 늘어났습니다.' ] 라는 문장에서 '29.2%'를 추출해보자.import redata = '동 기업의 매출액은 전년 대비 29.2% 늘어났습니다.'re.findall('\d + .\d + %', data)3. 정규 표현식의 종류- 대괄호([ ])는 문자 클래스로써 대괄호 안에 포함된 문자들 중 하나와 매치를 뜻함 - 'apple', '.. 2024. 11. 5.
크롤링 실습: 셀레니움을 이용한 동적 크롤링 실습하기 from selenium import webdriverfrom selenium.webdriver.chrome.service import Servicefrom webdriver_manager.chrome import ChromeDriverManagerfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.common.keys import Keysimport timefrom bs4 import BeautifulSoupdriver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))url = 'http://www.naver.com'driver.get(url)driver.page.. 2024. 11. 5.
정적 크롤링과 동적 크롤링의 차이 1. 정적 크롤링과 동적 크롤링의 차이 - 셀레니움을 이용할 경우 정적 페이지와 동적 페이지를 모두 크롤링 할 수 있다는 장점이 있지만, 상대적으로 속도가 느림구분정적 크롤링동적 크롤링사용 패키지requestsselenium수집 커버리지정적 페이지정적 / 동적 페이지수집 속도빠름상대적으로 느림파싱 패키지beautifulsoupbeautifulsoup / selenium 2. 셀레니움이란?- 다양한 브라우저 및 플랫폼에서 웹 응용 프로그램을 테스트할 수 있게 해주는 라이브러리- 웹 자동화 테스트 용도로 개발이 되었기에 실제 브라우저를 사용- 페이지가 변화하는 것도 관찰이 가능하기에 동적 크롤링에 사용할 수 있음 2024. 11. 5.