from selenium import webdriver as wb
# 웹브라우저를 통제하기 위한 라이브러리
from selenium.webdriver.common.keys import Keys
# 웹에게 값을 입력받기 위한 라이브러리
from selenium.webdriver.common.by import By
# html 문서에서 태그와 선택자를 찾기 위한 라이브러리
from bs4 import BeautifulSoup as bs
# 컴퓨터가 이해하기 쉬운 객체로 변환해주는 라이브러리
import time
# 코딩 중간에 쉬는시간을 부여해주는 라이브러리
import os
# 운영체제에서 제공되는 여러 기능을 파이썬에서 사용할 수 있게 해주는 라이브러리
from urllib.request import urlretrieve
# 이미지 경로를 이미지 파일로 바꿔주는 라이브러리
driver = wb.Chrome()
driver.get('https://www.naver.com/')
btn = driver.find_element(By.ID, 'query')
# btn.send_keys('숙성도') -> 수동적인 코드
search_name = input("검색어를 입력하세요 >>")
btn.send_keys(search_name)
btn.send_keys(Keys.ENTER)
# 바탕화면에 검색어를 이름으로 하는 파일을 생성하기
if not os.path.isdir(f"C:\\Users\\smhrd\\Desktop/{search_name}") :
os.mkdir(f"C:\\Users\\smhrd\\Desktop/{search_name}")
print("폴더가 생성되었습니다.")
else :
print("이미 생성된 파일입니다.")
btn = driver.find_elements(By.CLASS_NAME, 'tab')[1]
btn.send_keys(Keys.ENTER)
soup = bs(driver.page_source, 'lxml')
img = soup.select('img._image._listImage')
img[0]['src']
img_list = []
for i in img :
img_list.append(i['src'])
for i in range(len(img_list)) :
urlretrieve(img_list[i], f'C:\\Users\\smhrd\\Desktop/{search_name}/{i+1}번째 꼬기.jpg')
종합_데이터 정제 방법 1)
# 바탕화면에 검색어를 이름으로 하는 파일을 생성하기
if not os.path.isdir(f'C:\\Users\\smhrd\\Desktop/{search_name}') :
os.mkdir(f'C:\\Users\\smhrd\\Desktop/{search_name}')
print("폴더가 생성되었습니다.")
else :
print("이미 생성된 파일입니다.")
driver = wb.Chrome()
driver.get('https://www.naver.com/')
btn = driver.find_element(By.ID, 'query')
search_name = input("검색어를 입력하세요 >> ")
btn.send_keys(search_name)
btn.send_keys(Keys.ENTER)
# btn = driver.find_elements(By.CLASS_NAME, 'tab')[1]
# btn.send_keys(Keys.ENTER)
driver.find_elements(By.CLASS_NAME, 'tab')[1].click() # '이미지' 탭 클릭
time.sleep(2)
btn = driver.find_element(By.TAG_NAME, 'body')
for i in range(5) : # 스크롤 5번 내리기
btn.send_keys(Keys.END)
time.sleep(2)
soup = bs(driver.page_source, 'lxml')
img = soup.select('img._image._listImage')
# 1번째 방법 : 데이터 정제(빼고 수집)
# data ~~로 시작하는 데이터 지워보기
img_list = []
for i in img :
if 'data' not in i['src'][:4] : # i['src'][:4] != 'data'
img_list.append(i['src'])
for k in range(len(img_list)) :
urlretrieve(img_list[k], f'C:\\Users\\smhrd\\Desktop/{search_name}/{k+1}번째 꼬기.jpg')
# 리스트에 있는 src 경로값을 이미지 파일로 변환해서 저장
종합_데이터 정제 방법 2)
# 바탕화면에 검색어를 이름으로 하는 파일을 생성하기
if not os.path.isdir(f'C:\\Users\\smhrd\\Desktop/{search_name}') :
os.mkdir(f'C:\\Users\\smhrd\\Desktop/{search_name}')
print("폴더가 생성되었습니다.")
else :
print("이미 생성된 파일입니다.")
driver = wb.Chrome()
driver.get('https://www.naver.com/')
btn = driver.find_element(By.ID, 'query')
search_name = input("검색어를 입력하세요 >> ")
btn.send_keys(search_name)
btn.send_keys(Keys.ENTER)
# btn = driver.find_elements(By.CLASS_NAME, 'tab')[1]
# btn.send_keys(Keys.ENTER)
driver.find_elements(By.CLASS_NAME, 'tab')[1].click() # '이미지' 탭 클릭
time.sleep(2)
btn = driver.find_element(By.TAG_NAME, 'body')
for i in range(5) : # 스크롤 5번 내리기
btn.send_keys(Keys.END)
time.sleep(2)
soup = bs(driver.page_source, 'lxml')
# 2번째 방법 : data로 수집되는 이유를 한 번 알아보고 그것도 같이 출력
# bs객체화를 통해 가져온 정보는 정적인 정보
# 동적인 정보를 가져오면 해결될 수 있다.
img_list2 = []
img2 = driver.find_elements(By.CLASS_NAME, '_image._listImage')
for j in img2:
img_list2.append(j.get_attribute('src')) # 이미지 태그의 src 값을 추출해서 리스트에 담아주기
for k in range(len(img_list)) :
urlretrieve(img_list[k], f'C:\\Users\\smhrd\\Desktop/{search_name}/{k+1}번째 꼬기.jpg')
# 리스트에 있는 src 경로값을 이미지 파일로 변환해서 저장
'Web > Crawling' 카테고리의 다른 글
크롤링 시험 (0) | 2023.04.13 |
---|---|
포켓몬 이미지 데이터 수집 (0) | 2023.04.12 |
Gmarket 상품정보 수집 (0) | 2023.04.10 |
한솥도시락 data 크롤링 (0) | 2023.04.09 |
selenium 라이브러리 (0) | 2023.04.09 |
댓글