본문 바로가기
  • 시간(時間)을 아끼는 방법은 시간을 낭비하지 않는것


교육 후기/스파르타코딩클럽_개발일지

주식 데이터를 활용한 파이썬 데이터 분석_1주차 개발일지

by pk7912 2023. 9. 3.
728x90

웹 스크래핑

colab사용시 라이브러리 설치 명령어 앞에 "!"를 붙인다.

예를 들면,

!pip install bs4 requests

 

라이브러리 requests로 요청하고 가져온다 , bs4로 추출해서 분석하기 좋게 만듦!

 

예시,

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'}

 

user agent는 HTTP 요청을 보내는 디바이스와 브라우저 등 사용자 소프트웨어의 식별 정보를 담고 있는 request header의 한 종류, 

임의로 수정될 수 없는 값이고, 보통 HTTP 요청 에러가 발생했을 때 요청을 보낸 사용자 환경을 알아보기 위해 사용함, 

기본형태는,

 {User-Agent: <product> / <product-version> <comment>}

위에 사용한 거랑 비교해서 보면 이해됨

 {'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')

 

원하는 항목. select로 리스트형태로 저장

  for li in lis:

 

for문으로 반복해서 가져오기

        a = li.select_one('a.news_tit')

 

 

. select는 리스트 형태의 결괏값이 저장되고,

. select_one은문서의 처음부터 찾게 되며 가장 첫 <a> 태그를 호출 (전체 웹페이지에서 CSS Selector에 매칭되는 가장 첫 번째 객체를 가져옴)

링크 텍스트와 주소만 필요하다면 select_one으로

        row = [a.text, a['href']]

 

select_one을 사용할 경우

문서의 처음부터 찾게 되며 가장 첫 태그를 호출한다.

select_one의 경우 바로 data.text , data ["href"]를 통해 속성 값을 얻을 수 있다.

속성값을 row로

        sheet.append(row)

 

(row)를 엑셀시트에 추가

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

 

오늘 날짜

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

 

workbook 객체를 실제 파일로 저장하기 위해. save함수 사용, 저장할 위치를 정해줄 때 경로입력함

        wb.close()

 

이것 외에도 주식데이터를 가져와봤다.

숙제였지만.... 이미지도 가져올 수 있단 걸 경험했다.

 

라이브러리만 잘 사용하면 생각보다 많은 일을 할 수 있을 거 같은 기대가 되네...

다기억할 필요는 없다고, 검색으로 찾아 복붙 하면 된다는데..... 더 알아야 이해가 될 것 같은데..... 좀 알아야 가져와서 쓸 수 있지 않나....

그냥 1주 차니깐 믿고 해 보자~

댓글