컴퓨터잡담

파이썬으로 네이버 증권정보 추출하기

by nanumi posted Jun 05, 2021
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄

파이썬으로 네이버 증권정보 추출하기

 

import time
from unicodedata import lookup #time 명령어 사용하기 
from bs4 import BeautifulSoup # BeautifulSoup 불러오기
#파이썬 requests 모듈은 간편한 HTTP 요청처리를 위해 사용하는 모듈로 별도로 설치해 주어야 한다.
import requests #pip3 install requests
 
search_data = "140520"
url = "https://navercomp.wisereport.co.kr/v2/company/c1010001.aspx?cmp_cd=" + search_data + "&cn="
html = requests.get(url)
bs_html = BeautifulSoup(html.content,"html.parser")

#종목명
search_name = bs_html.select("span")[2].text
#print(search_name)
 
#현재가 추출
nowval = bs_html.select("tr")[3]
now = nowval.select("strong")[0].get_text(" "strip=True)
 
#eps, bps, per, bpr, 배당정보 추출
val_rs = bs_html.select("td")[2]
eps = val_rs.select("dt b.num")[0].text
bps = val_rs.select("dt b.num")[1].text
per = val_rs.select("dt b.num")[2].text
upper = val_rs.select("dt b.num")[3].text
pbr = val_rs.select("dt b.num")[4].text
allocation = val_rs.select("dt b.num")[5].text
print(now + " ||| " + eps + " ||| " + bps + " ||| " + per + " ||| " + upper + " ||| " + pbr + " ||| " + allocation)
 
#대주주 지분율 추출
Shareholder_re = bs_html.select("tr")[19]
Shareholder = Shareholder_re.select("td")[2].get_text(" "strip=True)
 
#기업 내용
contents = bs_html.select("div.cmp_comment li")
content = ""
for i in contents:
    content = content + i.text #contents변수가 i변수로 대체되니 파이썬만의 특이함이 새롭다.
    
print(content)


 
#결과값 스프레드로 전달하기
import gspread
from oauth2client.service_account import ServiceAccountCredentials
scope = [
'https://spreadsheets.google.com/feeds',
'https://www.googleapis.com/auth/drive',
]
json_file_name = 'C:\\Users\\크리스퍼\\python_code\\스프레드시트json키.json'
credentials = ServiceAccountCredentials.from_json_keyfile_name(json_file_namescope)
gc = gspread.authorize(credentials)
spreadsheet_url = '스프레드시트 파일 주소'
# 스프레스시트 문서 가져오기 
doc = gc.open_by_url(spreadsheet_url)
# 시트 선택하기
worksheet = doc.worksheet('관심종목')
 
#print(now + " ||| " + eps + " ||| " + bps + " ||| " + per + " ||| " + upper + " ||| " + pbr + " ||| " + allocation)
worksheet.insert_row(['1'search_datasearch_namenowepsbpsperpbrallocationShareholdercontent], 4)