One Step Ahead

파이썬크롤링 연습 beautifulsoup_1 본문

공부중인것&잘까먹는것/PYTHON

파이썬크롤링 연습 beautifulsoup_1

소피st 2018. 7. 22. 23:53

웹크롤링을 하여 데이터를 DB에 저장하여 필요할때 뽑아쓰고 싶은데

파이썬이라는 언어가 크롤링에 쉽다는 포스팅을 많이 봤다.

필자는 프로그래밍의 프자도 모르는 사람이다.

15년전 개인홈페이지를 만들어본 경험과 제로보드 그누보드 정도를 사용해봤고 PHP코드의 아주 기초적인 내용을

보면 읽을줄 아는 정도... 쉽게 말하면 영어를 처음 배울때 대충 읽으면 어떤 내용인지 감이 올것같은 느낌이 들지만

말을 할 수준은 안되는 정도라고 보면 되겠다. (현재상태)

이상태 마저도 나이가 들면서 자꾸 잊어버린다. 그래서 블로그를 개설하여 기록을 하려는 것이고...

물론 나의 직업과 프로그래밍은 전혀 관계가 없다.  컴퓨터나 프로그래밍 기초는 생활필수품으로 생각하고 배우고자 하는 그냥 학생.

일단 파이썬을 사용하려면 파이썬 공식홈페이지에서 다운로드를 받아야 하는 방법이 있고 필자는 비주얼스튜디오 2017을 설치하였다.

비주얼스튜디오로 많은 언어를 개발할 수 있는 것 같아서 설치를 하였다.

그러나 많은 사람들은 파이참이라던지 다른 개발툴을 사용하는거 같았다. 

일단 아래의 코드는 네이버에서 주식 주가정보를 가져오는 것을 테스트해봤다.

파이썬의 뷰티풀스프를 이용하여 크롤링하는 방법이다.

누군가가 뷰티풀스프라는것을 잘 만들어 놓았다. HTML 테그로 필터링하여 배열로 가져오는 방식으로 보인다.


import requests
from bs4 import BeautifulSoup

code = "056360" #종목코드번호
url = "https://finance.naver.com/item/sise_day.nhn?code="+code #크롤링할주소
req = requests.get(url)
html = req.text
soup = BeautifulSoup(html, 'html.parser')
t1 = soup.find("table", {"class":"type2"})
day = t1.find_all("span",{"class":"tah p10 gray03"}) #날짜
jong = t1.find_all("span",{"class":"tah p11"}) #종가
#print(len(jong))
for day in day:
    day = day.text
    print(day)

for i in range(0, len(jong)):
    jong1 = jong[i].text
    if i % 5 == 0:
        print(jong1)

내가 크롤링 테스트를 할 주소는 https://finance.naver.com/item/sise_day.nhn?code=056360

이종목이다 코위버라는 종목... 물론 주식도 가지고 있다. 6개월안에 괜찮은 가격 상승을 해줄것 같아서 매수했다. 

주식은 신도 모른다. 재무지표도 나쁘지 않고 저평가 된 종목으로 보인다.

위 주소로 가면 지난 10일간의 종가 등락폭 시가 고가 거래량등의 정보가 나와있다.

나는 날짜와 종가만 가져와 봤다. 

이것저것 테스트 해보면서 성공은 했다. 

PHP의 FOR문과 IF문은 알고 있는데 파이썬은 첨이라 공부하면서 ㅜㅜ

뷰티풀스프를 사용하고 나서 대충 이렇게 사용하는구나 라는 감은 살짝 왔다.

하지만 더 연습을 해서 좀더 빠르고 정확하게 원하는 정보를 크롤링 할 수 있도록 해야겠다.

코드에 대한 설명은 이글을 보는 사람이라면 누구나 다 알것 같아서 생략한다.

단기간의 목표는 내가 매수한 종목리스트와 매수가격을 입력하면 종가와 현재 수익율을 계산해주는 정도?

과거 데이터를 DB에 모두 저장하려면 쉽지는 않을것 같다.

PHP에 비해 문법이 좀더 쉬운것 같은 느낌은 살짝 든다.

시간날때 선언문 반복문 조건문등 기본적인것 부터 배우면서 해봐야겠다.

Comments