카테고리 없음
[빅데이터분석] 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()