Language/Python
BeatifulSoup를 활용한 네이버 주식 시가총액 크롤링하기
은하윤슬
2023. 5. 3. 22:40
Selenium을 공부하기 앞서 BeatifulSoup에 대한 문법을 익히며 네이버 주식 시가총액 크롤링하는 실습을 진행하였습니다.
https://finance.naver.com/sise/sise_market_sum.nhn?sosok=1
시가총액 : 네이버 증권
관심종목의 실시간 주가를 가장 빠르게 확인하는 곳
finance.naver.com
네이버 증권에 존재하는 시가총액 링크를 활용하여 lxml을 통해 웹페이지를 파싱해 개발자 도구로 해당 테이블을 찾아 각각의 데이터들을 담고 for문을 통해 빈줄 제거를 해줌으로써 csv파일로 만들었습니다.
import csv
import requests
from bs4 import BeautifulSoup
url = "https://finance.naver.com/sise/sise_market_sum.nhn?sosok=0&page="
filename = "시가총액1-200.csv"
f = open(filename, "w", encoding="utf-8-sig", newline="")
title = "N 종목명 현재가 전일비 등락률 액면가 시가총액 상장주식수 외국인비율 거래량 PER ROE 토론실".split("\t")
writer = csv.writer(f)
writer.writerow(title)
for page in range(1, 5):
res = requests.get(url + str(page))
res.raise_for_status()
soup = BeautifulSoup(res.text, "lxml")
data_rows = soup.find("table", attrs={"class":"type_2"}).find("tbody").find_all("tr")
for row in data_rows:
columns = row.find_all("td")
if len(columns) <= 1: #의미 없는 데이터 skip
continue
data = [column.get_text().strip() for column in columns]
#print(data)
writer.writerow(data)
BeautifulSoup 라이브러리의 find 함수를 활용하여 table태그의 type_2 class 안에 있는 tbody 태그 안에 있는 tr태그를 find_all 함수로 데이터들을 전부 가져왔습니다.