EEYatHo 앱 깎는 이야기

크롤링 ) Selenium 본문

Server/크롤링

크롤링 ) Selenium

EEYatHo 2023. 3. 15. 22:27
반응형

 

 

selenium


  • 원래는 웹 어플리케이션 테스트 도구. 하지만 크롤링에서 많이 쓰이게 됨.

 

  • 페이지 로딩 및 태그 선택
from selenium import webdriver

# 브라우저 생성
browser = webdriver.Chrome("{chromedriver파일경로}")

# 네이버 열기
browser.get("https://www.naver.com")
browser.implicitly_wait(10) # 웹사이트 로딩 10초 기다려주기 (10초 안에 로딩되면 바로 넘어감)

# 쇼핑 메뉴 열기
browser.find_element(By.CSS_SELECTOR, value="a.nav.shop").click()

 

  • 클릭 및 문자 입력
from selenium.webdriver.common.keys import Keys

# 검색창 클릭
search = browser.find_element(By.CSS_SELECTOR, value="input._searchInput_search_text_3CUDs")
search.click()

# 검색어 입력
search.send_keys("아이폰 13")
search.send_keys(Keys.ENTER)

 

 

  • 복사 붙혀넣기 ( 너무 빠른 입력 우회 )
import pyautogui
import pyperclip

# 입력 하고싶은 component 선택과정 생략
...


# 자꾸 복붙이 아닌 v가 입력됨. 버그인듯.. 
# 이렇게 미리 커맨드 한번 누르면 잘 됨.
pyautogui.hotkey("command") 

# 복붙
pyperclip.copy("아이패드")
time.sleep(1)
pyautogui.hotkey("command", "v")
time.sleep(1)

 

 

 

  • 무한 스크롤 ( 맨밑까지 가서 해당 페이지의 모든 상품 로딩하기 )
# 스크롤 전 높이
before_h = browser.execute_script("return window.scrollY")

while True:
    # 맨 아래로 스크롤
    browser.find_element(By.CSS_SELECTOR, value="body").send_keys(Keys.END)
    time.sleep(1)

    # 스크롤 후 높이
    after_h = browser.execute_script("return window.scrollY")

    # 더 스크롤이 생성되지 않는다면, 멈추기
    if after_h == before_h: break
    
    before_h = after_h

 

  • 여러 페이지
    • 실제로 페이지를 이동하면서, url 파라미터가 변하는 것을 보고 어떤 파라미터가 페이지를 뜻하는지 파악
    • 반복문 돌면서, url 파라미터를 바꿔주면 됨

'Server > 크롤링' 카테고리의 다른 글

크롤링 ) requests + beautifulSoup  (0) 2023.03.15
크롤링 ) 기본지식  (0) 2023.03.15
Comments