Knowledge Map
네이버 파이낸스에서 etf 코드 가져오기 본문
추가 : 구글링만 해도 쉽게 나온다.
http://comp.wisereport.co.kr/ETF/lookup.aspx
나처럼 고생하지말자 ㅋㅋㅋㅋ...
네이버 파이낸스랑 한국거래소 홈페이지, 야후 파이낸스에 국내 ETF 코드를 한눈에 보여주는 곳이 없어서 간단히 만들어봤다.
한국거래소 홈페이지 -> ETF 엑셀파일 -> [ 파이썬에 로드 -> 네이버 파이낸스 URL에 검색 -> 결과값 파싱 -> 파이썬 출력 ]
총 211개의 국내 ETF가 존재했는데 다행히 25개를 제외한 나머지는 잘 출력되었다. 걔네들은 결과값이 1개 이상이라서 바로 코드를 보여주는게 아니라서 어쩔수 없이 수동으로 채워넣었다만 나머지 185개는 잘 나왔으니 그냥저냥 넘어가기로 했다.
ETF코드는 엑셀 파일로 간단히 기록했으니 이걸 참고하면 된다.
2016-06-04 : 구글 파이낸스에서는 etf 코드 검색시에 "KRX:" 이것을 안 붙이면 동일한 다른 코드가 검색되곤 한다. 해당 부분 수정해서 다시 올렸음.
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | # -*- coding: utf-8 -*- """ 아나콘다에 google finance 설치하는 코드. 메모삼아 적어놓았다. install : conda install -c https://conda.anaconda.org/hargup/channel/pypi googlefinance Even if there would be be no conda package, mixing conda and pip installations is fine. conda "knows" about the pip-installed packages. """ import requests import xlrd import xlsxwriter from bs4 import BeautifulSoup import urllib import time # 테스트용 코드 : 참조한 코드이다. def get_sector(code): # url = 'http://finance.naver.com/search/search.nhn?query=ARIRANG+200' url = 'http://finance.naver.com/item/main.nhn?code='+ code r = requests.get(url) soup = BeautifulSoup(r.text) sector = "" h4 = soup.find('h4', {'class':'h_sub sub_tit7'}) if h4 is not None: # h4의 h_sub sub_tit7라는 클래스의 내용을 전부 저장 # 그중에서 a태그의 텍스트를 가져오도록 함. sector = h4.a.text return sector # print get_sector('005930') # etf 코드 가져옴 def get_etfcode(text_code): url = 'http://finance.naver.com/search/search.nhn?query='+text_code r = requests.get(url) soup = BeautifulSoup(r.text) # bs로 가져온 값을 형변환을 거치면서 원하는 값을 찾아서 리턴 etfcode = "" span = str(list(soup.find_all('script',))[-1]) start_point = span.find("code=") eftcode = span[start_point+5 : span.find("'",start_point)] return eftcode #print get_etfcode() # 인코딩 변환 (네이버 파이낸스는 값을 EUC-KR로 인코딩해서 보낸다.) def change_subject(text): return urllib.quote(text.encode('EUC-KR'), '/:') # 아래 것은 테스트 해봄 url = u'ARIRANG 코스피' # print change_subject(url) def read_excel(): # 엑셀 읽기 위함 wb = xlrd.open_workbook("D:\_ABC\kospiData\Etf_Name.xlsx") ws = wb.sheet_by_index(0) # 엑셀에 값추가 w_wb = xlsxwriter.Workbook("D:\_ABC\kospiData\Etf_Name.xlsx") w_ws = w_wb.add_worksheet() ncol = ws.ncols nrow = ws.nrows # 엑셀에 저장된 ETF이름을 for문을 이용, 인코딩, 검색 & 파싱 후 출력 for i in range(nrow): test = get_etfcode(change_subject(ws.row_values(i)[1])) w_ws.write(i,2,test) print ws.row_values(i)[1],"==>",test # 굳이 없어도 잘 돌아가긴 하는데 찜찜해서 추가한 0.1초 딜레이 time.sleep(0.1) read_excel() | cs |
'경제 & 투자' 카테고리의 다른 글
ETF 상관계수 최소값 구하기 (동일 기간) (0) | 2016.06.06 |
---|---|
WorldBank Indicator 정리 (0) | 2016.05.31 |
WorldBank Country 정리 (0) | 2016.05.31 |
구글 파이낸스 스크리너 (0) | 2016.05.30 |
pandas, finance를 이용한 데이터 가져오기 (0) | 2016.05.30 |
Comments