해달책방

스파르타코딩클럽 파이썬 데이터분석 개발일지 Day1 본문

카테고리 없음

스파르타코딩클럽 파이썬 데이터분석 개발일지 Day1

SEA OTTER'S BOOKSHOP 2022. 9. 3. 18:26

 

구글 Colaboratory

파이썬 명령어를 무료로 구현해볼 수 있는 무료 사이트

 

https://colab.research.google.com/?hl=ko

Google Colab은 무료

연속 연결 시간 최대 90분, 하루 이용 제한 12시간

 

 

colab은 구글드라이브와 연동되어 있으므로, 파일  앞에 구글드라이브 아이콘을 볼 수 있음

왼쪽 하단 주황테두리 폴더를 누르면 sample_data, .. 폴더가 보이는데, 해당 폴더는 1주차-2폴더와 같이 저장되지는 않는 임시폴더임. 위쪽 런타임 메뉴를 누르면 코드가 남아 있는 상태에서 하위폴더는 리셋됨

 

 

 

 

 

파이썬 기본 사용법

Colab에서는 SQL과 마찬가지로 명령어 실행 시 ctrl + enter

Colab에서는 ctrl+m+d 하면 코드 삭제가능

 

 

 

1. 변수 & 기본연산 --- +, -, * , ÷, > , <

 

2. 리스트, 딕셔너리 형 --- 매우매우 많이 씀 . 리스트 ['a','b','c'], 딕셔너리 {key:value}

 딕셔너리를 리스트 안에 넣을 수 있음

 리스트의 index는 0부터임 a=0열, b=1열, c=2열

 

3. 함수

def f(x):

 return 2*x+3

 

y = f(2)

 

물음 : y의 값은? 7

 

4. 조건문

def howoldareyou(age):
 
  if age > 20:
    print('성인')
    print('자유를누려라')
  else:
    print('청소년')
    print('잡았다 요놈!')

howoldareyou(50)
howoldareyou(5)

 

if로 시작하는 line부터는 키보드 tab키를 눌러주는게 좋음

 

 

5. 반복문

ages = [36,14,18,2]

for age in ages:
  howoldareyou(age)

실행하면 뜨는 결과 :

 

자유를누려라

청소년

잡았다 요놈!

청소년

잡았다 요놈!

청소년

잡았다 요놈!

 

 

추가

사용법 참고 사이트. '파이썬 리스트 추가삭제'라고 검색하면 나옴

https://wikidocs.net/16040

 

 

 

 

 

 

파이썬과 라이브러리

라이브러리란 특정 명령을 쉽고 빠르게 처리할 수 있도록 누군가가 만들어 놓은 명령어들의 조합임.

 e.g) 네이버에서 특정키워드로 검색한 TOP10 기사를 엑셀로 다운받아 한 파일로 압축하기 / 파일 이름 일괄 변경

 

만약에 삼성전자로 검색한 기사 중 제목이랑 URL을 가져오고 싶을 때는, 가져 오고 싶은 텍스트가 있는 영역을 개발자도구로 살펴보면 됨.

 

삼성전자 검색 후 기사 위에 오른쪽 마우스 클릭하면 검사라는 드롭박스가 나옴. 클릭

첫번째 이미지에서 볼 수 있듯이  코드는 li로 묶여 있음

 

Colab에 !pip install bs4 requests 을 설치하고 아래 라이브러리를 가져와서 원하는대로 수정하면 됨

 

 


import requests

from bs4 import BeautifulSoup

 

headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'} data = requests.get('https://search.naver.com/search.naver?where=news&ie=utf8&sm=nws_hty&query=삼성전자',headers=headers)

 

soup = BeautifulSoup(data.text, 'html.parser')

 


 

원하는 대로 편집하면 

 

import requests
from bs4 import BeautifulSoup

def get_news(keyword):


  headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'}
  data = requests.get(f'https://search.naver.com/search.naver?where=news&ie=utf8&sm=nws_hty&query={keyword}',headers=headers)

  soup = BeautifulSoup(data.text, 'html.parser')

  lis = soup.select('#main_pack > section > div > div.group_news > ul > li')

  for li in lis:
    a = li.select_one('a.news_tit')
    print(a.text, a['href'])


get_news('오스템임플란트')
print('........')
get_news('LG이노텍')
print('........')
get_news('한솔섬유')

 

 

아래와 같은 결과 나옴

li로 시작하는 코드를 select하여 기사제목과 URL을 불러오라는 명령

 

select나 select_one을 쓸 때에는 copy selector를 해야 함

 


[스타워즈] 대폭 뒤집힌 순위…1위 거머쥔 임진우, '오스템임플란트'가 효자 https://www.hankyung.com/finance/article/2022083113396 [급등주]오스템임플란트 상승, 中 VBP 정책 도입 발표 영향 https://www.jeonmae.co.kr/news/articleView.html?idxno=912130 "中 가격인하 정책에 입지 확대"…날개 펴는 임플란트주 https://www.sedaily.com/NewsView/26AWMLD8HJ [SS탐방] 국내 최대 규모 치과 전시관 '오스템 연구소 제품 전시관' http://www.sportsseoul.com/news/read/1156337?ref=naver [특징주] 오스템임플란트 5·20일선 '골든크로스' 발생하며 주가 상승 https://www.gokorea.kr/news/articleView.html?idxno=730503 오스템임플란트 주가 5거랠 연속 훨훨... 외국인 폭풍매도후 매수 전환 촉각 http://www.pinpointnews.co.kr/news/articleView.html?idxno=139381 [여의도 주식왕 2부] '원익QnC vs 오스템임플란트 vs 모트렉스' 여의도를 달굴... https://news.mtn.co.kr/news-detail/2022090107040137806 [단독] 횡령에 온 가족 합심 새롭게 드러난 오스템임플란트 사건 전말 https://view.asiae.co.kr/article/2022082308102542661 지난해 의료기기 수출 상위 에스디바이오센서·씨젠·애보트진단 순 http://www.yakup.com/news/index.html?mode=view&cat=12&nid=272881 의료기기 상장사 브랜드평판 한국비엔씨·휴마시스 순 http://www.yakup.com/news/index.html?mode=view&cat=12&nid=272914

........

LG이노텍 홈페이지 방문하면 도슨트가 제품 설명 https://www.yna.co.kr/view/AKR20220901063000003?input=1195m "LG이노텍, 내년 1분기 애플의 첫 XR 기기 출시 수혜 기대"-키움 https://www.hankyung.com/finance/article/2022090125856 LG이노텍, 주가 조정 마무리 단계...장기 성장성 주목-현대차 http://daily.hankooki.com/news/articleView.html?idxno=866332 아이폰14 공개 임박…LG이노텍, 재고 30% 더 쌓았다 https://www.wowtv.co.kr/NewsCenter/News/Read?articleId=A202208310063&t=NNv LG이노텍, 정철동 대표 체제서 전장부문 흑자전환 하나 http://www.datanews.co.kr/news/article.html?no=123260 [더벨]LGD·이노텍, 1년 임기 사외이사 선택한 이유 http://www.thebell.co.kr/front/free/contents/news/article_view.asp?key=202208291454544600102793 '사과만 먹곤 못 살아' LG이노텍 호실적에도 활짝 못 웃는 까닭 https://ilyo.co.kr/?ac=article_view&entry_id=435626 LG이노텍, 테슬라 1조 규모 수주 보도에 강세 https://www.mk.co.kr/economy/view/2022/751669 [산업 이모저모] SKT·KT·LGU+ 이통3사, 추석 맞이 동반성장 행보...협력사에... http://www.greened.kr/news/articleView.html?idxno=297512 [특징주] LG이노텍, '테슬라 카메라모듈 수주' 보도에 급등 https://www.yna.co.kr/view/AKR20220825035000002?input=1195m

........

'프리뷰 인 서울 2022'에서 살펴본 섬유산업의 미래 http://www.ekoreanews.co.kr/news/articleView.html?idxno=62537 "섬유패션산업의 장"…'프리뷰 인 서울 2022' 개막 http://www.edaily.co.kr/news/newspath.asp?newsid=01361206632430600 '프리뷰 인 서울' 개막 임박…섬유패션도 디지털 융합 '화두' https://www.ebn.co.kr/news/view/1543315/?sc=Naver 한솔섬유, 탄소 배출 감축 나섰다 http://www.apparelnews.co.kr/news/news_view/?idx=196475 [단독] 코스피 상장 나선 한솔섬유…의류株 한세실업과 '맞짱' http://news.mk.co.kr/newsRead.php?no=1124159&year=2021 [포토] 신은지·김연지 동덕여대 패션디자인학과 학생, 한솔섬유 업사이클링 ... http://www.dailysmart.co.kr/news/articleView.html?idxno=60668 '의류 빅3' 한솔섬유 상장 추진 https://www.hankyung.com/finance/article/2021070874571 [fn마켓워치]스틱얼터너티브운용, 한솔섬유에 580억 투자 추진 http://www.fnnews.com/news/202102101734190712 한솔섬유, 스틱운용서 580억 투자 유치 https://www.hankyung.com/finance/article/2021020960151 바이어가 원하는 수요 섬유소재 제시한국섬유산업연합회, 정보소통 분과위원회... http://www.fashionbiz.co.kr/TN/?cate=2&recom=2&idx=192728


편-안

 

강의의 도움이 있었으니 어느정도 따라는 하지만,

문제 내고 이렇게 해봐라 했을 때 해결법에 접근하는 것 조차 난감할 정도로 아직은 공부해야 할 것들이 많음

 

그래도 눈에 익는 명령어는 있어서 반복만 잘 하면 일단 강의에 있는 것은 무난하게 할 수 있지 않을 까 싶음

한 강의 당 10번 정도 반복하면 되지 않을까...? ^^

 

 

 

 

앞의 명령어에서 아래 두 코드를 따로 순서대로 만들어 입력해주면

삼성전자부터 기업은행까지 키워드를 알아서 반복해서 넣어주어 알아서 검색함

news라는 하위폴더에 알아서 엑셀파일로 변환되어 들어감

 


keywords = ['삼성전자','LG에너지솔루션','SK하이닉스','NAVER','삼성바이오로직스','삼성전자우','카카오','삼성SDI','현대차','LG화학','기아','POSCO홀딩스','KB금융','카카오뱅크','셀트리온','신한지주','삼성물산','현대모비스','SK이노베이션','LG전자','카카오페이','SK','한국전력','크래프톤','하나금융지주','LG생활건강','HMM','삼성생명','하이브','두산중공업','SK텔레콤','삼성전기','SK바이오사이언스','LG','S-Oil','고려아연','KT&G','우리금융지주','대한항공','삼성에스디에스','현대중공업','엔씨소프트','삼성화재','아모레퍼시픽','KT','포스코케미칼','넷마블','SK아이이테크놀로지','LG이노텍','기업은행']

for keyword in keywords:
  print(keyword)
  get_news(keyword)
 

 
import os

path = '/content/news'
files = os.listdir(path)

for name in files:
  new_name = name.split('.')[0]+'(뉴스).xlsx'
  os.rename(f'/content/news/{name}',f'/content/news/{new_name}')

 

파일명에 날짜 넣고 싶을 때는 아래와 같이 입력

 


 

import requests
from bs4 import BeautifulSoup

from openpyxl import Workbook
from datetime import datetime


def get_news(keyword):

  wb= Workbook()
  sheet = wb.active


  headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'}
  data = requests.get(f'https://search.naver.com/search.naver?where=news&ie=utf8&sm=nws_hty&query={keyword}',headers=headers)

  soup = BeautifulSoup(data.text, 'html.parser')

  lis = soup.select('#main_pack > section > div > div.group_news > ul > li')

  for li in lis:
    a = li.select_one('a.news_tit')
    row = [a.text, a['href']]
    sheet.append(row)

    today = datetime.today().strftime("%Y-%m-%d")

  wb.save(f"news/{today}_{keyword}.xlsx")
  wb.close()

 


마지막, 숙제!

 

네이버 금융에서 특정 종목 3년 증시 그래프 이미지 다운받기

https://finance.naver.com/

 
 
import openpyxl
import urllib.request

wb = openpyxl.load_workbook('관리종목.xlsx')
sheet = wb['종목']

new_rows = list(sheet.rows)[1:]

for row in new_rows:
  urllib.request.urlretrieve(url, f"imgs/{row[0].value}.png")
 
 

!zip -r /content/관리종목png.zip /content/imgs