반응형
야후 파이낸스에서 주식 데이터 수집에 이어 이번엔 구글 파이낸스에서 주식 데이터를 수집해봅시다.
아래는 삼성전자 구글 파이낸스 URL인데, 주소를 보면 뒤가 "[티커]:KRX (코덱스는 KOSDAQ)" 형식으로 붙는 걸 알 수 있습니다. 여기에 티커만 바꿔주면서 종목을 조회할 겁니다.
https://www.google.com/finance/quote/005930:KRX
위 주소에서 주가와 날짜를 파싱해야합니다.
위에 찍힌 가격이 데이터를 수집하는 날로 가정하고 해도 되지만, 주말이나 휴장일에 수집할 수도 있기 때문에 화면에 나온 날짜 기준으로 파싱 하는 게 좋습니다.
datetime 라이브러리를 사용하여 날짜를 파싱 하였습니다.
# 날짜
content_date = soup.find("div", {"class": "ygUjEc"})
content_date = content_date.text.split(",")[0]
google_day = content_date.split(" ")[0]
google_month = content_date.split(" ")[1]
for month in ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]:
if google_month.find(month) > -1:
google_month = month
break
date = datetime.datetime.strptime(f"{google_day} {google_month} {datetime.datetime.now().year}", "%d %b %Y").strftime("%Y-%m-%d")
# 주가
content_close = soup.find("div", {"class": "YMlKec fxKbKc"})
close = re.sub(r'[^0-9.]', '', content_close.text)
헤더는 user-agent 랜덤 생성 라이브러리 써도 되지만, 귀찮아서 그냥 복붙...
def __get_headers():
return {
"accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
"accept-encoding": "gzip, deflate, br",
"accept-language": "en-GB,en;q=0.9,en-US;q=0.8,ml;q=0.7",
"cache-control": "max-age=0",
"dnt": "1",
"sec-fetch-dest": "document",
"sec-fetch-mode": "navigate",
"sec-fetch-site": "none",
"sec-fetch-user": "?1",
"upgrade-insecure-requests": "1",
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.122 Safari/537.36"}
삼성전자 데이터 수집 결과입니다.
삼성전자 {'date': '2021-10-12', 'close': 69000.0}
아래는 전체 코드입니다.
반응형
'개발' 카테고리의 다른 글
VSCODE for the WEB - vscode.dev 사용 후기 (0) | 2021.10.22 |
---|---|
기술 블로그 모음 (0) | 2021.10.15 |
파이썬 주식 데이터 수집 (야후 파이낸스) (1) | 2021.10.03 |
리눅스 crontab 크론탭 (0) | 2021.07.10 |
MySQL, MariaDB 계정 생성 및 권한 추가 (0) | 2021.03.27 |