본문 바로가기
공부/파이썬 Python

파이썬으로 이미지 크롤링하기 (requests, selenium)

by 혼밥맨 2022. 4. 3.
반응형

파이썬으로 이미지 크롤링하기 (requests, selenium)

 


웹사이트

펙셀 (pexel)에 등록된 이미지를 자동으로 다운로드하는 코드를 작성합니다. 

 

라이브러리

1
2
import requests
from selenium import webdriver
cs

 

변수 설정

1
2
3
max_count = 50
keyword = 'korea'
url = f"https://www.pexels.com/ko-kr/search/{keyword}/"
cs

max_count = 다운로드할 이미지의 최대 개수

keyword = 다운로드하고 싶은 이미지의 검색어, 키워드

 

 

브라우저 설정

1
2
3
browser = webdriver.Chrome()
browser.maximize_window()
brower.get(url)
cs

 

이미지 attributes

1
2
photo_items = browser.find_elements_by_class_name('photo-item__img')
img_urls = [x.get_attribute('data-big-src'for x in photo_items]
cs

 

반복문

1
2
3
4
5
6
7
8
9
10
11
12
13
14
index = 1
for img_url in img_urls:
    browser.get(img_url)
        
    res = requests.get(img_url)
    if res.ok:
        file_name = f"{keyword}_{index}.jpeg"
        with open(file_name, 'wb'as f:
            f.write(res.content)
        print(f"({index}) {file_name}")         # (2) korea_2.jpeg
        index = index + 1
    
    if index >  max_count:
        break;
cs

max_count 다운로드할 이미지 최대 개수만큼 반복문을 반복 실행합니다.

그리고 이미지 명은 {keyword}_{index}.jpeg으로 저장합니다. 예를 들어, korea_2.jpeg 이런 식으로 저장하게 됩니다.

Full Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import requests
from selenium import webdriver
 
 
max_count = 20
keyword = 'wallpaper'
url = f"https://www.pexels.com/ko-kr/search/{keyword}/"
 
browser = webdriver.Chrome()
browser.maximize_window()
brower.get(url)
 
photo_items = browser.find_elements_by_class_name('photo-item__img')
img_urls = [x.get_attribute('data-big-src'for x in photo_items]
 
 
index = 1
for img_url in img_urls:
    browser.get(img_url)
        
    res = requests.get(img_url)
    if res.ok:
        file_name = f"{keyword}_{index}.jpeg"
        with open(file_name, 'wb'as f:
            f.write(res.content)
 
        print(f"({index}) {file_name}")         # (2) korea_2.jpeg
        index = index + 1
    
    if index >  max_count:
        break;
 
 
browser.quit()
cs

 

결과

keyword 변수에 wallpaper를 저장시키고 코드를 실행시켰을 때 결과!

반응형

댓글