파이썬 활용 - 웹스크래핑

조쿨러·2024년 1월 3일

Python

목록 보기
5/12

6. 웹크롤링과 웹스크래핑

웹크롤링

  • 봇이 많은 웹사이트들을 돌아다니면서 URL, 키워드 등을 수집하는 것 (보통 검색 엔진에서 웹사이트를 수집하기 위해 사용됨)

웹스크래핑

  • 웹사이트에서 필요한 데이터를 긁어오는 것

Pycharm

  • 파이썬 프로그래밍 툴
  • 구글에서 pycharm 검색

HTML 구조의 이해

HyperTextMarkupLanguage 약어로 웹페이지를 위한 언어

beautifulsoup

request 모듈

  • pip install requests

beautiful soup

  • pip install beautifulsoup4
  • 주로 사용되는 함수 : find(), find_all(), string, get_text(), select()

개발자 모드

  • 크롬 브라우저에서 F12 키를 눌러 html tag 확인
  • 스크래핑할 웹페이지의 html 구조를 확인하기 위해 사용

selenium

크롬, 인터넷익스플로어, 파이어폭스 같은 부라우저를 컨트롤할때 사용

  • pip install selenium
  • pip install webdriver_manager

selenium 명령어

  • 브라우저 창 최대화 : driver.maximize_window()
  • 브라우저 닫기 : driver.close()
  • 현재탭 닫기 : drive.quit()
  • 뒤로가기 : driver.back()
  • 앞으로가기 : driver.forward()

Element : 브라우저 상에서 보이는 버튼, 검색창, 사진등의 모든 것

selenium 활용 youtube 크롤링

import time
from selenium import webdriver
from selenium.webdriver import Keys
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.service import Service
from bs4 import BeautifulSoup

chrome_options = webdriver.ChromeOptions()
chrome_options.add_experimental_option("detach",True)
driver = webdriver.Chrome(service = Service(ChromeDriverManager().install()), options=chrome_options)

driver.maximize_window()

keyword = '연세대학교'
driver.get('https://www.youtube.com/results?search_query=' + keyword)
time.sleep(5)

for temp in range(10) :
	driver.find_element(By.TAG_NAME,'body').send_keys(Keys.PAGE_DOWN)
    time.sleep(1)
    
html = driver.page_source
bs = BeautifulSoup(html,'html.parser')
titels = bs.find_all('a',id = 'video-title')

result = []
for temp in titles :
	title = temp.get('aria-label').split('조회수')[0]
    print(title)
    result.append(title)

df = pd.DataFrame(result)
df.to_csv('연세대_유튜브_제목.csv')
profile
지지 않기

0개의 댓글