728x90

Review
참고 포스팅 : 2020/09/14 - [Python Programming/Using Packages] - [데이터 크롤링] Selenium을 이용한 동적 페이지 크롤링

[데이터 크롤링] Selenium을 이용한 동적 페이지 크롤링

안녕하십니까, 간토끼입니다. 이전까지의 포스팅에서는 requests와 BeautifulSoup을 이용해 크롤링하는 방법에 대해서 다루어봤습니다.이번에는 Selenium이라는 라이브러리를 이용해 크롤링하는 방법��

datalabbit.tistory.com


안녕하십니까, 간토끼입니다.

제가 얼마 전에 인공지능 관련 공모전을 준비하면서 CNN 알고리즘을 이용해 이미지 데이터 분석을 하고자 직접 Custom Image Set을 구축했었는데요.

이 image set을 위해 직접 여러 포털 사이트를 뒤져가며 목적에 맞는 이미지를 수집했었습니다.

바퀴벌레 수집한 거라 ㅎㅎ 좀 징그럽죠?


마침 이 코드가 이전 포스팅에서 다루었던 seleniumbeautifulsoup을 활용한 짬뽕 코드길래
많은 분들께 도움도 드릴 겸 공유하고자 합니다.

# 1. 활용 library
from urllib.request import urlopen
from urllib.request import urlretrieve
from urllib.parse import quote_plus
from bs4 import BeautifulSoup
from selenium import webdriver
import os


# 2. 검색어 입력
search = input("검색어")
url = f'https://www.google.com/search?q={quote_plus(search)}&sxsrf=ALeKk02QeiWfv6bCTCr7BF_BPHDuAyPmew:1594639559008&source=lnms&tbm=isch&sa=X&ved=2ahUKEwiBiNajj8rqAhXCIqYKHcAECvgQ_AUoAXoECBQQAw&biw=1536&bih=722'

# 3. 이미지 수집
driver = webdriver.Chrome()
driver.get(url)
for i in range(500):
    driver.execute_script("window.scrollBy(0,10000)")

html = driver.page_source
soup = BeautifulSoup(html)
img = soup.select('img')
n = 1
imgurl = []

for i in img:
    try:
        imgurl.append(i.attrs["src"])
    except KeyError:
        imgurl.append(i.attrs["data-src"])
        
for i in imgurl:
    urlretrieve(i, "저장경로path설정하세요"+search+str(n)+".jpg")
    n += 1
    
driver.close()


간단하게 코드만 리뷰하면
1) driver.execute_script("window.scrollBy(0,10000)") : 이를 통해 스크롤을 쭉 내림으로써 많은 이미지를 노출시킵니다.

- 원하는 검색어를 입력 후 검색 결과에서 이미지 탭을 누르면 스크롤을 밑으로 내려야만 이미지가 계속 나타나는 것을 알 수 있습니다.
- 이러한 동적 페이지의 특성을 이용해 스크롤을 내려줌으로써 검색 결과를 노출시킵니다.

2) urlretrieve(i, "저장경로path설정하세요"+search+str(n)+".jpg") : 파일 저장할 경로에 "검색어1" 로 이미지 저장

- "저장경로path설정하세요" 는 본인이 수집한 이미지를 저장할 경로를 넣어줍니다.
- search+str(n) 은 앞서 input으로 입력한 검색어명, 그리고 파일의 순서를 넣어줌으로써 파일명을 만들어줍니다.
(ex. search : rabbit => rabbit1, rabbit2, ... , rabbit100)


잘 수집하셔서 연습용 custom image set을 갖춰보시기 바랍니다.


감사합니다.
잘 읽으셨다면 게시글 하단에 ♡(좋아요) 눌러주시면 감사하겠습니다 :)
(구독이면 더욱 좋습니다 ^_^)



- 간토끼(DataLabbit)
- University of Seoul
- Economics, Data Science

728x90

+ Recent posts