2021.07.13 - [Python/Django(장고)] - [Python/Django] 파이썬 주식 정보(뉴스) 페이지 만들기 - 4. 네이버 금융 홈페이지 크롤링 1
[Python/Django] 파이썬 주식 정보(뉴스) 페이지 만들기 - 4. 네이버 금융 홈페이지 크롤링 1
2021.07.07 - [Python/여러가지] - [Python] 파이썬 크롤링 - BeautifulSoup을 이용한 크롤링 [Python] 파이썬 크롤링 - BeautifulSoup을 이용한 크롤링 이번 포스트에서는 파이썬에서 자주 사용되는 BeautifulSou..
kante-kante.tistory.com
지난 포스트에서는 네이버 금융페이지에서 인기 검색 종목 상위 5개를 크롤링했다.
이번에는 좀 다른 정보들을 크롤링하여 웹에 표시해보도록 한다.
1. 네이버 금융 - 국내증시
https://finance.naver.com/sise/
국내증시 : 네이버 금융
관심종목의 실시간 주가를 가장 빠르게 확인하는 곳
finance.naver.com
업종별 시세는 전일대비 가격이 가장 많이 오른 분야의 정보를 보여준다.
여기서는 위의 3개 정보와 전일대비 상승률을 가져오도록 해보겠다.
업종별 시세 상위 3개
from bs4 import BeautifulSoup
import requests
import json
urls = 'https://finance.naver.com/main/main.nhn'
headers = {'User-Agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36"}
res = requests.get(urls,headers=headers)
soup = BeautifulSoup(res.text,'html.parser')
sise1 = list()
sise2 = list()
sise_title = soup.select('#content > div.article > div.section2 > div.section_top.section_top_first > ul > li > p.item > a > strong')
sise_diff = soup.select('#content > div.article > div.section2 > div.section_top.section_top_first > ul > li > p.item > em')
for s1 in sise_title:
sise1.append(s1.text.strip())
for i in range(len(sise1)):
title = sise_title[i].text.strip()
diff = sise_diff[i].text.strip()
sise_obj={
'title':title,
'diff': diff,
}
sise2.append(sise_obj)
sise_data = sise2
sise_title = 업종명
sise_diff = 전일비.
역시 django에서 출력하기 위해 리스트로 담아주었다.
2. 국내증시 - 인기 검색종목 10개
마찬가지로 인기 검색종목 상위 10가지가 정리되어 있는데, 이를 한번 크롤링해보도록 하겠다.
인기 검색종목 TOP 10
#python, django
from bs4 import BeautifulSoup
from urllib.request import urlopen
import urllib.request as req
import json
url = "http://finance.naver.com/sise/" #네이버 금융 url 주소
res = req.urlopen(url).read().decode('cp949') #utf-8 : 한글 깨짐, unicode_escape : 한글 깨짐, cp949로 변환해야한다.
soup = BeautifulSoup(res, "html.parser")
top101 = soup.select("#popularItemList > li > a")
top102 = soup.select("#popularItemList > li")
top10list1 = list()
top10list2 = list()
top101list = list()
top102list = list()
for top11 in top101:
top10list1.append(top11.text.strip())
for top22 in top102:
top10list2.append(top22.text.strip())
for i in range(len(top10list1)):
toptext1 = top101[i].text.strip()
item_objs={
'toptext1':toptext1,
}
top101list.append(item_objs)
data1 = top101list
for i in range(len(top10list2)):
toptext2 = top102[i].text.strip()
item_objs={
'toptext2':toptext2,
}
top102list.append(item_objs)
data2 = top102list
코드가 좀 요상하긴 한데 toptext1은 기업명을 의미하며
toptext2는 가격정보를 가지고 온다.
테스트 용으로 사용했던 코드라 알아보기 쉽지 않은데, 코드는 추후에 수정하도록 하겠다.
3.기관 순매수 상위 크롤링
https://finance.naver.com/sise/sise_deal_rank.nhn
외국인 매매 상위 : 네이버 금융
관심종목의 실시간 주가를 가장 빠르게 확인하는 곳
finance.naver.com
네이버 국내증시 페이지를 보면, 하단에 기관이나 외국인이 순매수 혹은 순매도한 기업들을 정리해 둔 표가 있다.
여기서는 우측에 보이는 기관 순매수 상위 7개를 크롤링 해보도록 하겠다.
기관 순매수 상위 7개
#django의 경우에는 views.py 부분에 함수를 정의해주면 된다. 이전 포스트 참조
from bs4 import BeautifulSoup
from urllib.request import urlopen
import requests
import json
url = 'https://finance.naver.com/sise/sise_deal_rank.nhn' #네이버 금융 url 주소
headers = {'User-Agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36"}
response = requests.get(url,headers=headers)
soup = BeautifulSoup(response.text,'html.parser')
organ_name = soup.find_all('a', class_ = 'company')
organ_price = soup.find_all('td',class_ = 'number')
organ1 = list()
total_organ = list()
for o in organ_name[0:7]:
organ1.append(o.text.strip())
for o2 in range(len(organ1)):
title = organ_name[o2].text.strip()
price = organ_price[o2].text.strip()
organ_obj={
'title': title,
'price': price,
}
total_organ.append(organ_obj)
organ_data=total_organ
print(organ_data)
여기서 왜 organ_name(기관매수 기업명)을 [0:7]로 설정해두었냐 하면
처음에 BeautifulSoup을 이용하여 불러올 때 select가 아닌 find_all로 불러왔기 때문에
그 아래에 있는 인기 검색어까지 크롤링하게 된다.
따라서 인기 검색어는 리스트에서 제외시켜주기 위해 7개까지만 받아오도록 설정하였다.
print 문을 사용해서 확인해보면
이렇게 따로 가져올수 있는것을 확인할 수 있다.
Django 웹에서 출력
'Python > Django(장고)' 카테고리의 다른 글
Django 관련 유용한 블로그, 팁 (0) | 2021.07.26 |
---|---|
[Python/Django] 파이썬 주식 정보(뉴스) 페이지 만들기 - 4. 네이버 금융 홈페이지 크롤링 1 (0) | 2021.07.13 |
[Python/Django] 파이썬 주식 정보(뉴스) 페이지 만들기 - 3. 부트스트랩 (0) | 2021.07.12 |
[Python/Django] 파이썬 주식 정보(뉴스) 페이지 만들기 - 2. 네이버 API를 이용하여 검색정보 받아오기 (0) | 2021.07.08 |
[Python/Django] 파이썬 주식 정보(뉴스) 페이지 만들기 - 1. 구조 만들기 (2) | 2021.07.06 |