본문 바로가기

프로그래밍&IT/파이썬

[파이썬] 웹 스크래핑.4 - CSV 기본

* 시가총액 상위 구하기 (naver > 증권 > 시가총액)

url = https://finance.naver.com/sise/sise_market_sum.naver?&page=2 

(첫번째 ; https://finance.naver.com/sise/sise_market_sum.naver 이지만, &page =1 해도 동일한 결과 )

 

네이버의 시가총액, 그리고 내부 분석

여기선 1~5까지의 페이지만 구하기로 한다.

(필요하면 계속 구할수있지만)

 

  • 종목들과 정보가 있는 table (class는 type_2) 에 있는 항목들을 찾는다
  • 필요없는 정보는 (공백 들) 필터링해서 필요한 정보만 받는다
  • csv로 저장하기위한 file 준비를 한다.

* source

import csv
import requests
from bs4 import BeautifulSoup

url = "https://finance.naver.com/sise/sise_market_sum.naver?&page=" # apges에 page number 넣기

# file (csv)로 저장학위한 기반 작업
filename = "시가총액.csv"
f = open(filename, "w", encoding="utf-8-sig", newline="")
writer = csv.writer(f)

# csv의 헤더값 넣기
title = "N	종목명	현재가	전일비	등락률	액면가	시가총액	상장주식수	외국인비율	거래량	PER	ROE".split('\t')
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
            
        # 공백도 없애기. strip()
        data = [column.get_text().strip() for column in columns]
        writer.writerow(data)

기본적인 웹 정보 수집 -> csv 파일로 만들기 까지.