카테고리 없음

[빅데이터분석] Python_39. 파이썬 이미지 스크롤링1 (구글&네이버)

chonny 2024. 8. 23. 15:32

◈  구글 이미지  스크롤링

1. 구길에서 이미지 검색창으로 가서 원하는 이미지를 검색하기.(아무것도 검색하지 않은 url)
https://www.google.co.kr/imghp?hl=ko&tab=wi&ei=l1AdWbegOcra8QXvtr-4Cw&ved=0EKouCBUoAQ​

2. 필요한 모듈을 임폴트 합니다. 
import urllib.request
from bs4 import BeautifulSoup
from selenium import webdriver # 크롬 웹브라우져를 자동으로 제어
from selenium.webdriver.common.keys import Keys 
import time
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service 
from webdriver_manager.chrome import ChromeDriverManager


3. 크롬 로봇를 설정합니다.

service = Service(ChromeDriverManager().install())
driver = webdriver.Chrome(service=service)


4. 구글 이미지 검색 URL을 받아옵니다. (키워드를 아무것도 입력하지 않았을때 url)

driver.get(" https://www.google.co.kr/imghp?hl=ko&tab=wi&ei=l1AdWbegOcra8QXvtr-4Cw&ved=0EKouCBUoAQ ")


5. 검색창에 검색 키워드를 넣기 위해서는 웹페이지의 검색창에 해당하는 부분이 어디다라고 알려주는 객체를 생성합니다

search = driver.find_element(By.XPATH, "//*[@class='gLFyf']")


6. 검색창에 자동으로 검색어가 입력되게 합니다.

search.submit()


7. 크롬로봇이 컴퓨터가 스스로 마우스를 아래로 내리게 합니다.

for i in range(1,9):
    driver.find_element(By.XPATH,'//body').send_keys(Keys.END)
    time.sleep(3)


8. 크롬 로봇이 스스로 결과 더보기 나오면 누르게합니다.

driver.find_element(By.XPATH,"//*[@class='mye4qd']").send_keys(Keys.ENTER)



9. 지금 현재 보이는 웹페이지의 html 코드를 출력합니다.

html = driver.page_source
soup = BeautifulSoup(html, 'lxml')
#print(soup)


10. 이미지들에 대한 상세 url을 params 리스트에 담아냅니다.

    params = []
    imgList = soup.find_all("img", class_="YQ4gaf")
    print(imgList)


총 코드

def  download_daum_image(keyword):
    import urllib.request
    from bs4 import BeautifulSoup
    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys 
    import time
    from selenium.webdriver.common.by import By
    from webdriver_manager.chrome import ChromeDriverManager
    from selenium.webdriver.chrome.service import Service 
    
    # 크롬 드라이버의 위치 지정 후 driver 객체 생성
    service = Service(ChromeDriverManager().install())
    driver = webdriver.Chrome(service=service)
    
    # 네이버 이미지 검색 페이지로 이동
    driver.get("https://search.daum.net/search?nil_suggest=btn&w=img&DA=SBC&q")
    
    time.sleep(5)
    
    # 검색창에 검색 키워드를 입력
    search = driver.find_element(By.XPATH, '//*[@id="q"]') 
    search.send_keys(keyword)
    search.send_keys(Keys.RETURN)
    
    # 페이지를 아래로 스크롤하여 더 많은 이미지를 로드
    for i in range(1, 20):
        driver.find_element(By.XPATH, "//body").send_keys(Keys.END) 
        time.sleep(5)
    
    # 현재 페이지의 HTML 소스 코드를 가져와 파싱
    html = driver.page_source  
    soup = BeautifulSoup(html, "lxml")
    
    # 이미지 태그를 찾고 이미지 URL을 수집
    params_n = []
    imgList = soup.find_all("div", class_=["wrap_thumb"])
    for i in imgList:
        img_tag = i.find("img")  # 'img' 태그 찾기
        if img_tag:
            img_url = img_tag.get("data-src", img_tag.get("src")) # 이미지 URL 가져오기
            if img_url:
                params_n.append(img_url)
    
    # 수집한 이미지 URL을 사용하여 이미지를 다운로드
    for idx, p in enumerate(params_n, 1):
        urllib.request.urlretrieve(p, "c:\\data_image5\\" + str(idx) + ".jpg")
    
    # 작업 완료 후 브라우저 닫기
    driver.quit()

 

 

◈  네이버 이미지  스크롤링

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

# 크롬 드라이버의 위치 지정 후 driver 객체 생성
service = Service(ChromeDriverManager().install())
driver = webdriver.Chrome(service=service)

# 네이버 이미지 검색 페이지로 이동
driver.get("https://search.naver.com/search.naver?where=image&sm=stb_nmr&")

time.sleep(5)

# 검색창에 검색 키워드를 입력
search = driver.find_element(By.XPATH, '//*[@id="nx_query"]')
search.send_keys("에펠탑")
search.send_keys(Keys.RETURN)

# 페이지를 아래로 스크롤하여 더 많은 이미지를 로드
for i in range(1, 20):
    driver.find_element(By.XPATH, "//body").send_keys(Keys.END) 
    time.sleep(5)

# 현재 페이지의 HTML 소스 코드를 가져와 파싱
html = driver.page_source  
soup = BeautifulSoup(html, "lxml")

# 이미지 태그를 찾고 이미지 URL을 수집
params_n = []
imgList = soup.find_all("div", class_=["image_tile_bx", "_fe_image_viewer_focus_target"])
for i in imgList:
    img_tag = i.find("img")  # 'img' 태그 찾기
    if img_tag:
        img_url = img_tag.get("data-src", img_tag.get("src"))  # 이미지 URL 가져오기
        if img_url:
            params_n.append(img_url)

# 수집한 이미지 URL을 사용하여 이미지를 다운로드
for idx, p in enumerate(params_n, 1):
    urllib.request.urlretrieve(p, "c:\\data_image4\\" + str(idx) + ".jpg")

# 작업 완료 후 브라우저 닫기
driver.quit()