일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 구름IDE
- 파이썬엑셀추출
- 기울어진열판
- 주식길잡이
- 주린이
- 관련주
- 식기세척기가능전기그릴
- 비에이치투자전략
- 어린이날테마주
- 실버매니아
- 파이썬구름
- 좀버남
- 파이썬주식
- 주식이야기
- 파이썬크롤링
- 파이썬엑셀프린트
- 주식투자성공하기
- 파이썬재무데이터크롤링
- 가성비좋은전기그릴
- 파이썬재무데이터
- 파이썬_구름IDE
- 파이썬엑셀
- 5G안테나
- 파이썬주식전체종목가져오기
- 치명적단점
- 파이썬주식전체종목
- 파이썬전체종목재무데이터
- 주식아빠
- 주식시작하기
- 파이썬
- Today
- Total
주식아빠, 좀버남의 주식 연구소
[주식-프로그래밍] 4. 파이썬 - 주식 전체종목 재무데이터 가져오기 본문
안녕하세요.
2020/05/24 - [코딩이야기/파이썬] - [주식-프로그래밍] 3. 파이썬 크롤링 - 재무데이터 가져오기
[주식-프로그래밍] 3. 파이썬 크롤링 - 재무데이터 가져오기
안녕하세요. 이제 주식과 파이썬-크롤링을 접합해보겠습니다. 퓨전!! 우선 재무데이터를 어디서 가져올지 부터 생각을 해야겠죠. 일반 포털 사이트?? FnGuide?? 저는 주로 FnGuide에서 가져와서 사용�
kang-stock-coding.tistory.com
이전 글에 이어서, 재무데이터를 크롤링하는것을 좀더 공부 해보겠습니다.
지난 글에서는 단순합니다.
1개 기업의 데이터를 가져옵니다.
실제로 좋은 종목을 찾기 위해선 모든 종목들을 펼처 놓고 봐야하겠죠.
그렇다면 전체 종목에 대한 자료가 필요합니다.
간단한 예제 5개 기업의 정보를 가져오는 것으로 해보겠습니다.
res = requests.get("http://comp.fnguide.com/SVO2/ASP/SVD_Finance.asp?pGB=1&gicode=A005930&cID=&MenuYn=Y&ReportGB=&NewMenuID=103&stkGb=701")
이전 시간에서 주소창에 위와 같이 입력을 하였습니다.
여기서 조금 트릭이 필요합니다.
http://comp.fnguide.com/SVO2/ASP/SVD_Finance.asp?pGB=1&gicode=A005930&cID=&MenuYn=Y&ReportGB=&NewMenuID=103&stkGb=701
실제 주소창은 종목 코드가 중간에 위치합니다.
하지만, 실제로 '&'으로 구분된 인자의 순서는 중요하지 않습니다.
그러면 이 주소를 바꿔줍니다.
http://comp.fnguide.com/SVO2/ASP/SVD_Finance.asp?pGB=1&cID=&MenuYn=Y&ReportGB=&NewMenuID=103&stkGb=701&gicode=A005930
이렇게 바꿔 줍니다.
대충 느낌이 오시나요??
우선 코드를 일부 변경해보겠습니다.
res = requests.get("http://comp.fnguide.com/SVO2/ASP/SVD_Finance.asp?pGB=1&gicode=A005930&cID=&MenuYn=Y&ReportGB=&NewMenuID=103&stkGb=701")
위 코드를 아래와 같이 분리합니다.
Code = 'A005930'
url = 'https://comp.fnguide.com/SVO2/ASP/SVD_Finance.asp?pGB=1&cID=&MenuYn=Y&ReportGB=&NewMenuID=103&stkGb=701&gicode' + code
res = requests.get(url)
그외 밑에 코드도 수정합니다.
soup, table, 항목을 지워주고, df를 조금 변경합니다.
삭제: soup = BeautifulSoup(res.content,'lxml')
삭제: table = soup.find_all('table')
수정: df = pd.read_html(res.text)
------전체코드 시작
import pandas as pd
import requests
from bs4 import BeautifulSoup
from tabulate import tabulate
Code = 'A005930'
url = 'https://comp.fnguide.com/SVO2/ASP/SVD_Finance.asp?pGB=1&cID=&MenuYn=Y&ReportGB=&NewMenuID=103&stkGb=701&gicode' + code
res = requests.get(url)
df = pd.read_html(res.text)
print( tabulate(df[0], headers='keys', tablefmt='psql') )
------전체코드 끝
자 이제 출력을 해보겠습니다.
출력은?? 명령어창에 python '파일이름'을 입력하죠.
저같은 경우는 FS_Table.py로 등록했기에 python FS_Table.py를 입력하면??
주소를 변경하였음에도 이전과 동일한 데이터를 출력하는 것을 확인 가능합니다.
자 그럼 이제 5개 기업에 대하여 재무데이터를 출력할 준비가 완료 되었습니다.
5개 기업은? 시가총액 상위 5개 기업으로 선정 했습니다.
A005930(삼성전자), A000660(SK하이닉스), A207940(삼성바이오로직스), A035420(NAVER), A068270(셀트리온)
그러면 code의 변수를 배열로 변경하고, url~print까지를 for 반복문을 시켜주면 됩니다.
code = ['A005930','A000660', 'A207940','A035420','A068270']
for code in code:
url = 'http://comp.fnguide.com/SVO2/ASP/SVD_Finance.asp?pGB=1&cID=&MenuYn=Y&ReportGB=&NewMenuID=103&stkGb=701&gicode=' + code
requests.get(url)
df = pd.read_html(res.text)
print( tabulate(df[0], headers='keys', tablefmt='psql') )
결과는??
순차적으로 출력이 됩니다.
근데 코드가 왠지 마음에 안듭니다.
그래서 함수를 사용합니다.
def 함수명(값):
함수~~
return 돌려줄값:
def는 함수를 선언하는 내용입니다.
즉, print만 for반복문에 남기고 다른 내용을 전부 함수로 처리합니다.
그러면 code의 배열만 우리가 전체 종목으로 가져오면 되겠죠??
그것은 일단 숙제로 남겨 두겠습니다.(아마 6부에서?)
그리고 아래 전체 TABLE의 데이터에서 필요한 데이터만 가져오는 방법을 다음에 공부 해보겠습니다.
감사합니다.
'코딩이야기 > 파이썬' 카테고리의 다른 글
[주식-프로그래밍] 6. 파이썬 - 주식 전체종목 재무데이터 가져오기 - 세번째 (1) | 2020.05.26 |
---|---|
[주식-프로그래밍] 5. 파이썬 - 주식 전체종목 재무데이터 가져오기 - 두번째 (1) | 2020.05.26 |
[주식-프로그래밍] 3. 파이썬 크롤링 - 재무데이터 가져오기 (5) | 2020.05.24 |
[주식-프로그래밍] 2. 크롤링 환경 구축 및 예제 따라하기 - Wikipedia (1) | 2020.05.23 |
[주식-프로그래밍] 1. 파이썬 시작하기 - 구름IDE (1) | 2020.05.23 |