흰 스타렉스에서 내가 내리지

웹 크롤링 3 - 크롤링한 데이터들을 파일에 저장하기 본문

Web Crawling

웹 크롤링 3 - 크롤링한 데이터들을 파일에 저장하기

주씨. 2022. 2. 17. 17:01
728x90

이전 게시물에서 시가총액 상위 기업들의 순위들을 긁어왔었는데, 그것을 txt파일에 저장해보자.

import requests
from bs4 import BeautifulSoup

file = open('rank.txt', 'w')

naver_finance = requests.get('https://finance.naver.com/sise/sise_market_sum.naver')
naver_finance_html = BeautifulSoup(naver_finance.text, 'html.parser')

corps = naver_finance_html.select('tbody .tltle')

file.write('시가총액 순위')
for i in range(1, len(corps)+1):
    file.write(f'{i} : {corps[i-1].text}\n')

file.close()

잘 저장됨

 

 

 

자 그럼, 이 시가총액 TOP 기업들의 랭킹을 매일 자동으로 저장한다고 하자.

사실 시가총액 순위는 매일 변동이 그렇게 크지 않은 주제인데, 코드가 있으니 그냥 예시로 해보기로 하자.

이건 뉴스랭킹 긁어오는 주제가 더 적절한 것 같다.

 

데이터를 수집하는 날마다 파일명을 바꾸어 'TOP50_2022_02_11.txt' 와 같이 저장한다면 깔끔하겠다.

 

자 그럼 오늘 날짜를 불러오는 코드가 필요하겠다. datetime 라이브러리를 사용하자.

datetime 라이브러리는 이렇게 쓴다...!

년월일을 파일명으로 쓰고 싶으면 포매팅을 해야겠다,

datetime 라이브러리의 strftime()함수를 쓰면 된다.

strftime은 String Formatted Time의 약자다.

 

 

그럼 오늘 날짜가 포함된 파일명으로 시가총액 상위 기업들의 순위를 저장해보자.

import datetime
import requests
from bs4 import BeautifulSoup

df = datetime.datetime.now().strftime('%Y_%m_%d')
filename = 'TOP50_' + df

file = open(filename, 'w')

naver_finance = requests.get('https://finance.naver.com/sise/sise_market_sum.naver')
naver_finance_html = BeautifulSoup(naver_finance.text, 'html.parser')

corps = naver_finance_html.select('tbody .tltle')

file.write('시가총액 순위')
for i in range(1, len(corps)+1):
    file.write(f'{i} : {corps[i-1].text}\n')

file.close()

 

 

 

 

datetime 모듈에 대해 더 알고싶다면 공식문서 링크

https://docs.python.org/ko/3/library/datetime.html?highlight=datetime#module-datetime 

 

datetime — 기본 날짜와 시간 형 — Python 3.10.2 문서

datetime — 기본 날짜와 시간 형 소스 코드: Lib/datetime.py datetime 모듈은 날짜와 시간을 조작하는 클래스를 제공합니다. 날짜와 시간 산술이 지원되지만, 구현의 초점은 출력 포매팅과 조작을 위한

docs.python.org