brunch

You can make anything
by writing

C.S.Lewis

by Viel Liebe Jul 08. 2020

#8-1 사회혁신 프로젝트 관련 코드

웹 크롤링 부분

*웹 크롤링: 인터넷 페이지에서 원하는 부분을 복사해서 가져오는 일입니다. 제 탐구의 경우에는 각 이미지에 딸린 제목을 복사해서 가져옵니다. 10개 20개 정도는 손으로 복사 붙여넣기 하는 편이 빠르지만, 수백 개 결과를 제 손으로 복사 붙여넣기 하기는 어렵습니다.

**Python 언어를 사용한 웹 크롤링 툴을 만듭니다. Python 언어를 안다는 전제 하에 간단한 설명만 덧붙였습니다.


#외부 라이브러리 받아오기

from tqdm import tqdm #진행상황 표시

import time #자동 딜레이

#딜레이하지 않으면 웹사이트로부터 크롤링 요청을 차단당할 위험이 있음

from selenium import webdriver #셀레늄 - BeautifulSoup를 더 많이 이용하지만 구글이나 유튜브 등 일부 사이트는 BeautifulSoup를 이용한 크롤링을 막아놓음

from bs4 import BeautifulSoup #파싱을 위해 필요

from selenium.webdriver.common.keys import Keys #셀레늄을 통해 페이지 스크롤을 내리기 위한 라이브러리


#크롤링 범위

title_nums=range(0,100)


#리스트

Title_list=[]


#페이지 열기

Street_url='https://www.google.com/search?q=%EA%B8%B8%EA%B1%B0%EB%A6%AC&sxsrf=ALeKk02aSNoUZ0Pv8aT0oIQ4A5KUgSwkzA:1589460116430&source=lnms&tbm=isch&sa=X&ved=2ahUKEwiZh_-ssLPpAhUCZt4KHYmfAIgQ_AUoAXoECAsQAw&biw=1707&bih=907&dpr=1.5'

driver=webdriver.Chrome()

driver.get(Street_url)


#스크롤 내리기

body = driver.find_element_by_css_selector('body')

for i in range(10):

    body.send_keys(Keys.PAGE_DOWN)

    time.sleep(1)


#파싱: 크롤링한 데이터를 Python 언어로 처리하기 쉽게 다듬는 과정

source=driver.page_source

bs=BeautifulSoup(source, 'html.parser')

data=bs.select('div.WGvvNb')

L=list(data)


#크롤링

trial=0

for title in tqdm(title_nums):    #title_nums(크롤링할 제목의 개수)는 맨 앞에서 정의함, 이것을 조정해서 크롤링 범위를 정할 수 있음

    each_title=L[trial].text

    time.sleep(1)

    Title_list.append(each_title)

    trial=trial+1

    if trial>len(L):

        break


print(Title_list) #어떤 제목들이 있나 출력하게 만들지만 꼭 필요한 코드는 아님

매거진의 이전글 #8 연구주제 설정/중간보고서
작품 선택
키워드 선택 0 / 3 0
댓글여부
afliean
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari