1. Jupyter Notebook에서 셀레니움 설치
!pip install selenium
2. 크롬 드라이버 다운받기
본인 브라우저 사양에 맞는 것을 다운
3. 셀레니움 공홈에서 예시 코드 복붙해서 실행하기
이를 다음과 같이 수정해서 실행하자
from selenium import webdriver # 셀레니움 불러오기
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome() # 불러온 webdriver를 통해 다운받은 Chrome드라이버 불러와서 driver변수에 저장
driver.get("http://www.python.org")
'''
assert "Python" in driver.title
elem = driver.find_element_by_name("q")
elem.clear()
elem.send_keys("pycon")
elem.send_keys(Keys.RETURN)
assert "No results found." not in driver.page_source
driver.close()
'''
실행해주면 다음과 같은 새창이 뜬다.
본격적으로 시작하기
구글이미지창으로 이동 > 검색창에 pycon 입력 > 검색하기
from selenium import webdriver # 셀레니움 불러오기
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome() # 불러온 webdriver를 통해 다운받은 Chrome드라이버 불러와서 driver변수에 저장
driver.get("https://www.google.co.kr/imghp?hl=ko&tab=wi&ogbl") #구글 이미지 검색 주소를 삽입
elem = driver.find_element_by_name("q") # 검색창 태그 찾기
elem.send_keys("pycon") # 검색창에 키워드 입력하기
elem.send_keys(Keys.RETURN) # 검색창 enter 누르기
다운받을 이미지의 공통적인 태그를 확인해보자
동일한 태그의 클래스명을 찾았다.
위 클래스명은 띄어쓰기 되어 있다.
이럴 때는 어떻게 클래스명을 지정해야 할까?
.을 쓰면된다.
즉, ".rg_i.Q4LuWd"
전체 코드를 보자
from selenium import webdriver # 셀레니움 불러오기
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome() # 불러온 webdriver를 통해 다운받은 Chrome드라이버 불러와서 driver변수에 저장
driver.get("https://www.google.co.kr/imghp?hl=ko&tab=wi&ogbl") #구글 이미지 검색 주소를 삽입
elem = driver.find_element_by_name("q") # 검색창 태그 찾기
elem.send_keys("pycon") # 검색창에 키워드 입력하기
elem.send_keys(Keys.RETURN) # 검색창 enter 누르기
driver.find_elements_by_css_selector(".rg_i.Q4LuWd") # 여러개의 이미지선택하기. 클래스 네임 기준.
이 중 첫번째 이미지를 클릭해보기 위해 다음처럼 수정
driver.find_elements_by_css_selector(".rg_i.Q4LuWd")[0].click()
이미지 다운 받기
이제 클릭한 이미지를 다운받아보자
이를 위해 해당 이미지의 공통적인 클래스명을 확인하자
큰 이미지의 경우 공통적으로 다음 클래스명을 가진다.
하지만 이 이미지의 주소인 src도 알아야 다운받을 수 있다.
print(driver.find_elements_by_css_selector(".n3VNCb").get_attribute("src"))
하지만 이미지를 불러오기까지 로딩시간이 걸리기 떄문에 약간의 대기시간을 줘야한다.
time.sleep(3)
이를 이미지를 클릭하고 src를 불러오는 과정 사이에 넣어주자
전체코드
from selenium import webdriver # 셀레니움 불러오기
from selenium.webdriver.common.keys import Keys
import time
driver = webdriver.Chrome() # 불러온 webdriver를 통해 다운받은 Chrome드라이버 불러와서 driver변수에 저장
driver.get("https://www.google.co.kr/imghp?hl=ko&tab=wi&ogbl") #구글 이미지 검색 주소를 삽입
elem = driver.find_element_by_name("q") # 검색창 태그 찾기
elem.send_keys("pycon") # 검색창에 키워드 입력하기
elem.send_keys(Keys.RETURN) # 검색창 enter 누르기
# 여러개의 이미지 중 첫번째 선택해서 클릭하기. 클래스 네임 기준.
driver.find_elements_by_css_selector(".rg_i.Q4LuWd")[0].click()
# 이미지를 클릭한 뒤 대기시간 주기
time.sleep(3)
# 이미지 주소(src) 다운받기
print(driver.find_elements_by_css_selector(".n3VNCb").get_attribute("src"))
문제 발생 : AttributeError: 'list' object has no attribute 'get_attribute'
최하단의 코드
print(driver.find_elements_by_css_selector(".n3VNCb").get_attribute("src"))
를 다음과 같이 수정
img = driver.find_elements_by_css_selector(".n3VNCb")
for i in img :
imgUrl = i.get_attribute("src")
이제 url로 이미지를 다운받는 코드를 찾자
해당 요소를 넣고 실행 했으나 오류 발생
'\nassert "Python" in driver.title\n\nelem.clear()\n\n\nassert "No results found." not in driver.page_source\ndriver.close()\n'
'● 크롤링, 자동화 > Selenium' 카테고리의 다른 글
NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":".p"} (Session info: chrome=90.0.4430.212) (0) | 2021.05.19 |
---|---|
[beautifulsoup, selenium] 인스타그램 이미지 크롤링해보자! (1) | 2021.05.04 |
구글 로그인, 메일 보내기 자동화 (selenium, webdriver, actionchains) (0) | 2020.11.08 |
selenium 자동화 수집하기 (0) | 2020.11.08 |
Anaconda 다운로드 받기, Jupyter Notebook 설치하기 (0) | 2020.11.08 |