파이썬 + 셀레니움을 활용한 크롤링 (나사이미지)
https://eol.jsc.nasa.gov/SearchPhotos/photo.pl?mission=ISS068&roll=E&frame=41445
0) Selenium 간단 설명
https://selenium-python.readthedocs.io/getting-started.html
1) 준비물
1 : 크롬드라이버
자신에 맞는 드라이버 다운로드 : https://chromedriver.chromium.org/downloads
내가 쓰는 크롬 버전 확인 : 크롬 우측 상단 점3개 > 설정 > 크롬정보
2 : 작업용 폴더
바탕화면에 작업용 폴더 만들고 드라이버를 그 폴더에다가 넣어준다.
3: 셀레니움 설치
pip install selenium
2) 코드작성
1: 임포트하기
from selenium import webdriver # 웹열때
from selenium.webdriver.common.keys import Keys # 키 가져오기용
from selenium.webdriver.common.by import By # Xpath이용
import time # 슬립걸때 사용
import urllib # 다운로드
2: 코드 생각해보기
# 41445 번부터 41558번 까지 다운받고싶음
# https://eol.jsc.nasa.gov/SearchPhotos/photo.pl?mission=ISS068&roll=E&frame=41445 여기에 들어가서
# 큰 화소수 다운 받아야함 => class="btn btn-light" 버튼 눌러서 모달창 띄우기
# 모달창에서 이미지주소 긁어서 urllib으로 다운로드함
# 다운받았으면 페이지 번호 1올려야함 => num += num을 반복 -> while문 써야함
# 41445번째 xpath : //*[@id="wrap"]/div/div/div[4]/div[1]/a[1]
# 41446번째 xpath : //*[@id="wrap"]/div/div/div[4]/div[1]/a[1]
각 페이지별 고화소 픽셀 위치선택하는 xpath는 동일함
# 41445번째 xpath : //*[@id="myModal1"]/div/div/div[2]/img
# 41446번째 Xpath : //*[@id="myModal1"]/div/div/div[2]/img
각 페이지 모달창에 뜬 사진의 xpath가 동일함
=> Xpath 고정값으로 두고 페이지의 num만 바꾸면 됨
3: 코드 작성해보기
# 41445 번부터 41558번 까지 다운받고싶음
# https://eol.jsc.nasa.gov/SearchPhotos/photo.pl?mission=ISS068&roll=E&frame=41445 여기에 들어가서
# class="btn btn-light" 버튼 눌러서 모달창 띄우기
# 모달창에서 이미지주소 긁어서 urllib으로 다운로드하기
# 41445번째 xpath : //*[@id="myModal1"]/div/div/div[2]/img
# 41446번째 Xpath : //*[@id="myModal1"]/div/div/div[2]/img xpath는 동일하니 num만 바꾸면 되겠네?
# 다운받았으면 num += num을 반복 -> while문 써야함
# 초기번호 페이지번호설정
num = 41445 # 명시적으로 page_num으로 하는게 좋으나 간단하게 num으로 설정해둠
#화면열기
driver = webdriver.Chrome() # while 안에 넣어버리면 계속 새창이 뜸
while num < 41559 :
print(num)
# 다운받을 화면
driver.get('https://eol.jsc.nasa.gov/SearchPhotos/photo.pl?mission=ISS068&roll=E&frame={0}'.format(num))
time.sleep(2.1)
print("화면열기 성공", num)
# 화소선택버튼 찾기
search = driver.find_element(By.XPATH, '//*[@id="wrap"]/div/div/div[4]/div[1]/a[1]')
search.click()
print("화소선택 버튼 누리기 성공", num)
# image 주소 가져오기
img_url = driver.find_element(By.XPATH, '//*[@id="myModal1"]/div/div/div[2]/img' ).get_attribute('src')
print("주소 가져오기 성공", num)
# image 다운로드
urllib.request.urlretrieve(img_url, str(num)+'.png')
print("다운로드 성공", num)
time.sleep(5) #다운받는 시간 확보
num = num + 1
print(num)
다음에는 24장 모아서 1초짜리 영상으로 자동화 해봐야겠다
24fps 영상 자동화
'WEB Creator > Webpage' 카테고리의 다른 글
[Webpage] 사진 업로딩 [ Image Uploading] (0) | 2022.07.07 |
---|---|
[Webpage] 회원가입 로그인 연습1 - 5) main (0) | 2022.06.23 |
[Webpage] 회원가입 로그인 연습1 - 4-2) login Pro (0) | 2022.06.23 |
[Webpage] 회원가입 로그인 연습 1 - 4-1-1) Signup Pro) (0) | 2022.06.23 |
[Webpage] 회원가입 로그인 연습1 - 4-1) signup Form (0) | 2022.06.23 |