[내배캠 AI코스] TIL

내일배움캠프 1일차 TIL - 웹 스크래핑(크롤링)

띵제 2024. 2. 13. 19:53

오늘 들은 강의 : Chat GPT 3주차

 

8강 날씨 웹 스크래핑(크롤링)하기

 

파이썬 웹 스크래핑은 웹 페이지 안에서 원하는 정보를 찾아와 프로그램에 활용하는 것!

>API가 없어도 데이터를 가져올 수 있다

 

네이버 날씨 페이지에서 “온도 데이터” 만 찾아오기

>temp = soup.select_one('.temperature_text')

 

여기서 중요한 것은,

“현재 온도 25도” 가 아닌 오로지 숫자 “25”

 

그래서 temperature_text 태그 안에서 정말 필요한 데이터만 콕 집어줘야 한다

 

temp = soup.select_one('.temperature_text > strong').contents

 

9강 음악 웹 스크래핑(크롤링)하기

 

날씨 페이지에서 온도만 가져왔던 것과는 다르게

멜론 뮤직 top 100 곡의 리스트를 가져오는 실습

> 반복문의 활용을 통해서 가능하다

 

trs = soup.select('.lst50')

for tr in trs:

    rank = tr.select_one('.rank').text

    title = tr.select_one('.rank01 > span > a').text

    artist = tr.select_one('.rank02 > a').text

    image = tr.select_one('img')['src']

    print(rank, artist, "-", title)

 

이 실습에서 중요한 것은

1위부터 100위까지의 데이터에 “모두” 공통점으로 들어간 정보를 찾아야 한다는 것!

위 코드에서는 trs = soup.select('.lst50') 이 부분 때문에 100위까지의 정보가 나오지 않음

 

그래서 아래와 같이 수정

 

from bs4 import BeautifulSoup

import requests

 

url = "https://www.melon.com/chart/"

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(url, headers=headers)

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

 

trs = soup.select('table > tbody > tr')

for tr in trs:

    rank = tr.select_one('.rank').text

title = tr.select_one('.rank01 > span > a').text

    artist = tr.select_one('.rank02 > a').text

    image = tr.select_one('img')['src']

    print(rank, artist, "-", title)

 

10, 11강 Flask를 활용한 웹개발 시작

가상 환경 설치 및 Flask 패키지 설치

 

::오늘의 회고::

내배캠 첫날이라 여러가지를 적응하는데 더 정신이 없었던 것 같다.

강의를 듣긴 들었으나 이해가 어려웠던 탓에 뒷 강의는 TIL 작성에 어려움을 겪었다.

시간을 내서 다시 강의를 듣고 내용을 보충해야겠다.