Selenium을 공부하기 앞서 BeatifulSoup에 대한 문법을 익히며 네이버 주식 시가총액 크롤링하는 실습을 진행하였습니다.
https://finance.naver.com/sise/sise_market_sum.nhn?sosok=1
네이버 증권에 존재하는 시가총액 링크를 활용하여 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 함수로 데이터들을 전부 가져왔습니다.
'Language > Python' 카테고리의 다른 글
파이썬 셀레니움(Selenium) 모바일 환경으로 접속해보기 (0) | 2023.05.02 |
---|---|
노마드코더 파이썬 챌린지 수료 및 후기 (0) | 2023.04.04 |
노마드코더 파이썬 챌린지 8,9일차 (0) | 2023.03.23 |
노마드코더 파이썬챌린지 6일차 (0) | 2023.03.19 |
노마드코더 파이썬 챌린지 5일차 (0) | 2023.03.18 |