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 |
Tags
- FLUTTER
- appstore
- mac
- Session
- 웹뷰
- MacOS
- iOS16
- window
- Swift
- Git
- IOS
- geofencing
- Notification
- UIButton
- Archive
- Realm
- Firebase
- darkmode
- Apple
- github
- error
- JPA
- rxswift
- Code
- 개발자
- Xcode
- view
- SwiftUI
- 한글
- 이미지
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 |
Comments