컴퓨터/Python
네이버 금융 시고저종
풍경소리^^
2019. 6. 24. 06:41
https://www.youtube.com/watch?v=4HJyj3ypNlI&list=PLAdQRRy4vtQREMg7H7-zFPSOYS6xF1gIL&index=30
import requests
from bs4 import BeautifulSoup
# 네이버금융 - 리팩토링 function으로 묶기
def get_bs_obj(company_code):
url = "https://finance.naver.com/item/main.nhn?code="+company_code
result=requests.get(url)
bs_obj=BeautifulSoup(result.content,"html.parser")
return bs_obj
# company_code를 받아서 price를 return하는 함수
def get_candle_chart_data(company_code):
bs_obj=get_bs_obj(company_code)
# 종목명
h_name=bs_obj.find("div",{"class":"h_company"})
name=h_name.find("div",{"class":"wrap_company"})
a_tag=name.find("a")
company_name=a_tag.text
# open 시작가(전일)
td_first=bs_obj.find("td",{"class":"first"})
blind=td_first.find("span", {"class": "blind"})
open=blind.text
# high 고가
table=bs_obj.find("table",{"class":"no_info"})
tbody=table.find("tbody")
tr=table.findAll("tr")[0]
td=tr.findAll("td")[1]
blind = td.find("span", {"class": "blind"})
high=blind.text
# upper 상한가
table = bs_obj.find("table")
tbody = table.find("tbody")
tr = table.findAll("tr")[0]
td = tr.findAll("td")[1]
blind = td.findAll("span", {"class": "blind"})[1]
upper = blind.text
# print(blind)
# volume 거래량
table = bs_obj.find("table")
tbody = table.find("tbody")
tr = table.findAll("tr")[0]
td = tr.findAll("td")[2]
blind = td.find("span", {"class": "blind"})
volume = blind.text
# close 종가
table = bs_obj.find("table")
tbody = table.find("tbody")
tr = table.findAll("tr")[1]
td = tr.findAll("td")[0]
blind = td.find("span", {"class": "blind"})
close = blind.text
# low 저가
table = bs_obj.find("table")
tbody = table.find("tbody")
tr = table.findAll("tr")[1]
td = tr.findAll("td")[1]
blind = td.find("span", {"class": "blind"})
low = blind.text
# lower 하한가
table = bs_obj.find("table")
tbody = table.find("tbody")
tr = table.findAll("tr")[1]
td = tr.findAll("td")[1]
em = td.find("em", {"class": "no_cha"})
lower = em.text.strip("\n")
# transaction 거래대금
table = bs_obj.find("table")
tbody = table.find("tbody")
tr = table.findAll("tr")[1]
td = tr.findAll("td")[2]
blind = td.find("span", {"class": "blind"})
transaction = blind.text
# return company_name,open,high
return {"종목명 : ":company_name,"전일종가 : ":open,"고가 : ":high,"상한가 : ":upper, \
"거래량 : ":volume,"종가 : ":close,"저가 : ":low,"하한가 : ":lower,"거래대금 :":transaction}
# candle_chart_data=get_candle_chart_data("035420")
# print("종목명 : "+candle_chart_data[0])
# print("시작가 : "+candle_chart_data[1])
# print("고가 : "+candle_chart_data[2])
# print(candle_chart_data[0])
# print(candle_chart_data[1])
# print(candle_chart_data[2])
company_codes=["000660","035420","005930","034220","082640"]
for item in company_codes:
candle_chart_data=get_candle_chart_data(item)
print(candle_chart_data)