FLY AI 4기 1일차: 빅데이터

염지현·2023년 12월 23일

FLY AI 4기

목록 보기
2/16

1일차: 빅데이터 with 파이썬

1일차 요약

  • 빅데이터 분석을 위한 크롤링 공부를 위주로 진행
  • beautifulsoup으로 html 코드 파싱
  • selenium의 웹드라이버를 사용하여 크롬 조작
  • html에서 원소값을 찾을 때 find_element(By.ID, XPATH, ..., {tag}를 사용하여 원하는 값을 추출해오는 실습 진행

기술의 변화

  • 종이 신문 -> 온라인 기자 -> 스마트폰(이동이라는 제약이 사라짐): 프리랜스 기자 & 블로그 기자 -> 1인 미디어 크리에이터

  • 아이디어에 맞는 데이터를 찾는 것이 중요..!
    - 데이터 확보 중요

  • 팀빌딩 포지션: 기획, 문서화, 디자인, 프론트(웹, 앱), 백엔드, 인공지능

  • 2024년 인공지능 공모전 방향: 인공지능 기술을 어떻게 서비스로 제공하는지(개발까지 진행되어야 함) -> 인공지능을 서비스화하는데 주력하는 공모전

빅데이터의 이해

  • 정형 데이터 VS 비정형 데이터
  • 저장(수집하고 저장), 관리(저장한 데이터 관리), 분석
  • 빅데이터 처리 특징
    - 의사 결정 속도, 처리 복잡도, 데이터 규모, 데이터 구조, 분석 유연성, 처리량
  • 빅데이터 처리 과정과 기술
    - 데이터 소스 -> 수집 -> 저장 -> 처리 -> 분석 -> 표현

실습

🚨이제는 selenium에서 웹 드라이버를 정의할 때 더이상 chrome driver를 설치하지 않아도 된다. 아래의 코드를 참고하면 webdriver 오류가 나지 않는다!

driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
  • beautifulsoup 사용
  • 알게된 꿀 팁
    - f1 누르고 우클릭 안되는 거 해제할 수 있음(disable)
    - f12 누르고 좌측 상단 화살표 누르고 나서 내가 추출하고 싶은 데이터 클릭하면 작성된 html 코드로 넘어갈 수 있음
  • 우리 팀이 진행한 실습: 유튜브 검색 시 첫 영상의 댓글 크롤링하기
  • 참고 링크: https://velog.io/@parkeu/youtubecomment
from selenium.webdriver.common.by import By
from bs4 import BeautifulSoup
import pandas as pd

# 여기서 알게된 점..! time.sleep을 중간중간 넣어주지 않으면 로봇으로 인지하는지 안 넘어가짐

driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
inserturl = '푸바오'
url = f'https://www.youtube.com/results?search_query={inserturl}'
driver.get(url)
time.sleep(2)

elem1 = driver.find_element(By.XPATH, '//*[@id="thumbnail"]/yt-image/img')
elem1.click()
time.sleep(2)

driver.execute_script('window.scrollTo(0, 800)') # 한번 스크롤
time.sleep(3)

html_source = driver.page_source
soup = BeautifulSoup(html_source, 'html.parser')

id_list = soup.select('yt-formatted-string#content-text')
data_list = soup.select('yt-formatted-string#content-text') # comment 리스트 

comments = []

for i, data in enumerate(data_list):
    if data.get('class')[1] =='ytd-comment-renderer':
        comments.append(data.text)
    # print(data)

df = pd.DataFrame(comments)

df

0개의 댓글