컴퓨터/파이썬

파이썬(Python) - 스크래핑 ④ selenium을 이용한 크롤링

해피밀세트 2020. 4. 5. 21:34

 

 

selenium

웹브러우저를 컨트롤하여 UI(User Interface) 자동화하는 도구

 

<아나콘다 프롬프트>

pip install selenium

 

<chromium 다운로드>

https://chromedriver.chromium.org/downloads

 

<selenium 임포트>

from selenium import webdriver

 

 

1. 사이트 접속 및 스크린샷 찍기

chromium으로 크롬 브라우저 열기
browser = webdriver.Chrome('C:/chromedriver.exe') 


# 크롬 브라우저 내부 대기 초시간 
browser.implicitly_wait(2)


# url 접속 
browser.get("https://truman.tistory.com/") 


# 접속한 페이지의 url정보 확인 
print(browser.page_source)

# 접속한 페이지 스크린샷 찍기
browser.save_screenshot("C:/pypy/blog.png")

# browser 종료(닫기)
browser.quit()
 

 

 

2. 포털사이트에서 검색하기

# chromium으로 크롬 브라우저 열기
browser = webdriver.Chrome('C:/chromedriver.exe')

 

# url 접속
browser.get("https://search.naver.com/search.naver?where=image")

검색 박스 찾기
클래스를 표현할땐 .사용
자식 태그는 > 사용
key_box = browser.find_element_by_css_selector('span.keyword > input.box_window')


검색어 입력
key_box.send_keys("쿼카")

 

# 검색 수행
key_box.submit()

# 검색 결과 창 스크린샷
browser.save_screenshot("C:/pypy/naver_quokka.png")

# browser 종료 
browser.quit()

 

 

3. 검색한 이미지 저장

# 필요한 라이브러리 임포트
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time

 

# chromium으로 크롬 브라우저 열기browser = webdriver.Chrome('C:/chromedriver.exe')

 

# url 접속

browser.get("https://search.naver.com/search.naver?where=image")

 

# 검색 박스 찾기 
key_box = browser.find_element_by_id('nx_query')

 

# 검색어 입력

key_box.send_keys("쿼카")

 

# 검색 수행

key_box.submit()

 

# Keys.End : 스크롤 끝까지  
# time.sleep() : 초만큼 정지
for i in range(1,3):
    browser.find_element_by_tag_name('body').send_keys(Keys.ENTER)
    time.sleep(5)

 

# url 정보 저장이미지 url 저장
soup = BeautifulSoup(browser.page_source,'html.parser')
params = []
for i in soup.findAll('img',class_='_img'):
    params.append(i['src'])

 

# 이미지 저장
x = 1
for i in params:
    req.urlretrieve(i,"C:/pypy/quokka/"+str(x)+".jpg")
    x+=1

 

# 작동 확인용으로 스크린샷
browser.save_screenshot("C:/data/naver_quokka.png")

# 브라우저 종료

browser.quit()

 

 

 

4. Xpath로 페이지 열기

browser = webdriver.Chrome('C:/chromedriver.exe')
browser.get("http://prod.danawa.com/list/?cate=112758")
time.sleep(3)
 

# xpath로 경로 찾아서 클릭
xpath : Copy -> CopyXpath 

browser.find_element_by_xpath('//*[@id="dlMaker_simple"]/dd/div[2]/button[1]/strong').click() 
time.sleep(1) 
browser.find_element_by_xpath('//*[@id="selectMaker_simple_priceCompare_A"]/li[13]/label').click() 
time.sleep(1) 

 

 

soup = BeautifulSoup(browser.page_source,'html.parser') 
params = [] 

for i in soup.findAll('p',class_='prod_name'): 
    a = (i.find('a')).string 
    params.append(re.sub('[\t|\n]','',a)) 
print(params)

반응형