import requests
from bs4 import BeautifulSoup
f = open("sc.csv", 'w')
f.write("시총순위,종목명,가격,최고점 대비 가격 비율\n")
mp=1
def fin(a):
url='https://finance.naver.com/item/main.nhn?code='+str(a)
res=requests.get(url)
a=res.text
tp=a.find("52주 최고")
tm=a.find("52주 최고가")
ta=a.find("52주 최고점")
if tp==-1 or tm>-1 or ta>-1:
global mp
poe=a.find('52주최고')
t=a[poe:poe+200]
soup=BeautifulSoup(t,'html.parser')
max52=int((soup.em.string).replace(',',''))
poe=a.find('현재가')
t=a[poe:poe+20].split(' ')
ppt=t[1]
pvalue=int(t[1].replace(',',''))
poe=a.find('<dd>종목명')
t=a[poe:poe+50].split(' ')
y=t[1].split('</dd>')
tt=y[0]
print(tt+" : "+str(ppt)+"원 ("+str(int(pvalue/max52*100))+"%)")
f.write(str(mp)+","+tt+","+str(pvalue)+","+str(int(pvalue/max52*100))+"\n")
mp=mp+1
if tp>-1 and tm==-1 and ta==-1:
poe=a.find('최저 :' )
t=a[poe:poe+400]
soup=BeautifulSoup(t,'html.parser')
max52=int((soup.em.string).replace(',',''))
poe=a.find('현재가')
t=a[poe:poe+20].split(' ')
ppt=t[1]
pvalue=int(t[1].replace(',',''))
poe=a.find('<dd>종목명')
t=a[poe:poe+50].split(' ')
y=t[1].split('</dd>')
tt=y[0]
print(tt+" : "+str(ppt)+"원 ("+str(int(pvalue/max52*100))+"%)")
f.write(str(mp)+","+tt+","+str(pvalue)+","+str(int(pvalue/max52*100))+"\n")
mp=mp+1
ul="https://finance.naver.com/sise/sise_market_sum.nhn"
url="https://finance.naver.com/sise/sise_market_sum.nhn?&page=2"
res=requests.get(ul)
a=res.text
res=requests.get(url)
a=a+res.text
idx=0
while idx > -1 :
idx=a.find('main.naver?code=',idx)
if idx > -1 :
idx += len('main.naver?code=')
t=a[idx:idx+40]
code=(t[0:6])
fin(code)
f.close()
삼성전자 : 76,800원 (79%)
SK하이닉스 : 107,500원 (71%)
NAVER : 403,000원 (86%)
삼성바이오로직스 : 913,000원 (87%)
..
와 같은 식으로 출력되고 sc.csv파일을 열어보면 csv파일로도 내용을 확인할 수 있다.
- 지난번에 만들었던 fin함수를 개선했다.
- 원 소스가 자주 바뀌는 만큼 이 소스도 자주 바꿔줘야 한다.
반응형