본문 바로가기

파이썬으로 퀀트 프로그램 만들기 project/웹 크롤링

(11)
국내 주식 재무제표 크롤링하기_2 이전 포스트를 읽지 않으면 이해하기 어려우실 수 있습니다! 국내 모든 주식의 재무제표를 크롤링 해보겠습니다. 먼저 sql에 table을 먼저 만들어 줍니다. use stock_db; create table kor_fs ( 계정 varchar(30), 기준일 date, 값 float, 종목코드 varchar(6), 공시구분 varchar(1), primary key(계정, 기준일, 종목코드, 공시구분) ) 그리고 이제 파이썬으로 데이터를 크롤링 해보겠습니다. 먼저 아래의 코드를 실행하여 크롤링할 준비를 해보겠습니다. #모든 종목 재무제표 크롤링 import pymysql from sqlalchemy import create_engine import pandas as pd import requests as ..
국내 주식 재무제표 크롤링하기_1 네이버 증권 사이트에서도 재무제표 정보를 제공하기는 하지만 동적 페이지라서 셀레니움을 사용해야 합니다. 셀레니움의 단점은 느리다는 것이 단점입니다. 네이버 증권 사이트 대신에 CompanyGuide 사이트를 이용하겠습니다. 여기서 재무제표를 클릭해주세요. 그리고 사실 해당 페이지 url 주소에서 ~gicode=A005930 뒤에 부분은 필요없는 부분 입니다. 그리고 gicode 뒤에가 티커 정보임을 확인할 수 있습니다. 또한 재무제표 내용이 테이블 형태로 나오므로 pandas를 이용하기 좋습니다. #파이썬 실습 우선 최근일에 해당하는 티커정보를 불러옵니다. 지난번에 sql에 저장해두었던 데이터를 이용합니다. 지난번 블로그를 참조해주세요. from sqlalchemy import create_engine ..
국내 주식 섹터 데이터 크롤링 FnGuide Index에서는 WICS 산업분류를 발표합니다. 해당 사이트에서 [WICS] -> [에너지]에 들어가시면 에너지 섹터에 대한 정보가 나옵니다. 여기서 [Components] 탭에 들어가시면 구성종목을 보실 수 있습니다. 이것을 크롤링 해보겠습니다. 우선 해당 페이지에서 개발자 도구 화면을 열고 네트워크를 눌러줍니다. 그리고 페이지에서 조회 날짜를 2023년 9월 5일로 찍어보면 개발자 도구화면에서 통신과정을 볼 수 있습니다. (조회 버튼을 누르는게 아니라 달력에서 해당 날짜를 클릭하세요) 통신과정에서 'GetIndexComponents~' 부분을 클릭 후, request url을 복사해주세요. 그리고 이것을 브라우저 주소창에 붙여넣고 엔터 눌러주세요. 그러면 아래의 이미지 처럼 섹터 정보가..
동적 크롤링 - 셀레니움 일반적인 크롤링으로는 정적 데이터, 즉 변하지 않는 데이터만을 수집할 수 있습니다. 정적 데이터는 한 페이지 안에서 원하는 정보가 모두 드러나는 것을 정적 데이터라고 합니다. 이와 달리, 입력, 로그인 등을 통해 데이터가 바뀌는 것을 동적 데이터라고 합니다. 예를 들어서, 네이버 지도에서 카페를 입력하여 지도에 표시되는 카페들을 클릭한다고 합시다. 이때 다른 카페를 클릭할 때 페이지가 전환되는게 아니라 같은 페이지에서 내용만 변경됩니다. 이러한 데이터가 동적 데이터입니다. 셀레니움을 이용하면 정적 데이터, 동적 데이터 모두 크롤링 가능하지만 상대적으로 속도가 느립니다. 그래서 일반적으로 정적 크롤링 할때는 일반적인 request 패키지를 이용하고, 동적 클롤링은 셀레리움을 이용합니다. #동적 크롤링 실습..
웹 크롤링 실습_6 - POST 웹 크롤링 방식 중 POST 방식으로 실습을 진행해보겠습니다. 예시 웹 사이트로 한국거래소 상장공시시스템에 접속해주세요. 그리고 [오늘의 공시 -> 전체 -> 더보기]를 선택하면 전체 공시내요을 확인할 수 있습니다. (링크) 여기서 다른 날짜를 검색해도 페이지는 바뀌지만 URL은 바뀌지 않는 것을 확인할 수 있습니다. POST방식인 것을 확인할 수 있습니다. 개발자도구 화면을 열고 [Network] 클릭 후, 오늘의 공시에 날짜를 클릭하면 todaydisclosure.do 를 확인할 수 있습니다. todaydisclosure.do를 통해 데이터를 요청하는 것입니다. 그것을 클릭하여 [Headers]를 보시면 Request URL이 우리가 요청하는 주소이고, Request method가 POST방식임을 확..
웹 크롤링 실습_5 - 테이블 데이터 크롤링 하기(pandas) 웹 페이지에서 테이블 데이터를 크롤링 하는 방법을 알아보겠습니다. 먼저 예시 웹 사이트로 위키피디아에 [List of countries by stock market capitalization]을 검색해줍니다. (링크) 이 웹사이트에 있는 테이블 데이터를 크롤링 해보겠습니다. #테이블 데이터를 다룰 때는 pandas를 사용해준다. import pandas as pd url = 'https://en.wikipedia.org/wiki/List_of_countries_by_stock_market_capitalization' tbl = pd.read_html(url) print(tbl) 이처럼 테이블 데이터는 기존의 크롤링 방식과 달리 매우 간단하게 pandas를 크롤링 할 수 있습니다.
웹 크롤링 실습_4 - 금융 속보 제목 추출하기 금융 속보 제목을 추출해보겠습니다. 네이버 증권 사이트 -> 뉴스 -> 실시간 속보로 가주세요. (링크) 해당 페이지에서 제목에 해당하는 부분을 알아내기 위해 개발자도구를 열어줍니다. 제목에 해당하는 부분에 우클릭 -> 검사 클릭 해줍니다. 여기서 제목 부분은 dl태그 -> dd 태그, class = articleSubject - > a 태그 -> title 속성의 속성값 import requests as rq from bs4 import BeautifulSoup url = 'https://finance.naver.com/news/news_list.naver?mode=LSS2D&section_id=101&section_id2=258' data = rq.get(url) html = BeautifulSoup..
웹 크롤링 실습_3 저번 포스트를 참조해주세요. 저번 시간에 이어 이번에는 명언을 말한 사람의 데이터를 크롤링 해보겠습니다. 명언을 말한 사람은 class가 qoute 인 div태그 -> span 태그-> small 태그 중 class 이름이 author인 부분입니다. quote_author = quote_html.select('div.quote > span > small.author') quote_author_list = [i.text for i in quote_author] print(quote_author_list) 이번에는 명언을 말한 사람에 대한 정보 링크들을 크롤링 해보겠습니다. span 태그 -> a 태그의 href 속성 -> 속성 값 링크에 해당하는 href 속성값에 접근하는 방법은 우선 select를 통해 ..