Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- Realm
- mac
- geofencing
- Git
- Code
- github
- Swift
- error
- 이미지
- darkmode
- Apple
- Firebase
- 개발자
- Archive
- rxswift
- IOS
- SwiftUI
- Notification
- FLUTTER
- iOS16
- UIButton
- Session
- 한글
- window
- MacOS
- view
- 웹뷰
- appstore
- JPA
- Xcode
Archives
- Today
- Total
EEYatHo 앱 깎는 이야기
크롤링 ) Selenium 본문
반응형
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 |