728x90
반응형
2023.06.29 - [공부기록/파이썬] - Python + Selenium으로 크롤링 시작하기(예제 있음)
파이썬에서 셀레니움을 시작하는 방법은 위 글을 참조해주세요.
* WebDriverWait 클래스와 expected_conditions 모듈을 사용하여 특정 요소가 로드된 이후 원하는 데이터를 가지고 올 수 있습니다.
* 아래 코드를 참조해주세요.
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# 웹 드라이버 설정
driver = webdriver.Chrome()
# 웹 페이지 열기
driver.get('https://example.com')
# 특정 요소가 로드될 때까지 기다리기
wait = WebDriverWait(driver, 10)
element_locator = (By.CSS_SELECTOR, '.my-element-class')
# 요소가 나타날 때까지 기다림
element = wait.until(EC.presence_of_element_located(element_locator))
# 원하는 작업 수행
print(element.text)
# 웹 드라이버 종료
driver.quit()
위 코드에서 wait.until() 메서드를 사용하여 EC.presence_of_element_located() 조건을 기다립니다.
이 조건은 특정 요소가 페이지에 나타날 때까지 기다리는데 사용됩니다.
By.CSS_SELECTOR를 통해 CSS 선택자를 지정하고, .my-element-class와 같이 원하는 요소의 클래스 또는 선택자를 전달합니다.
요소가 나타나면 wait.until() 메서드는 해당 요소를 반환하고, 그 후에는 원하는 작업을 수행할 수 있습니다.
위 예시에서는 해당 요소의 텍스트를 출력하고 있습니다.
마지막으로, 웹 드라이버를 종료합니다.
By.CSS_SELECTOR 말고도 여러 선택자가 있습니다.
Selenium에서 사용할 수 있는 주요 선택자의 예시
1. ID 선택자: By.ID
예시: driver.find_element(By.ID, 'my-id')
2. 클래스 선택자: By.CLASS_NAME 또는 By.CSS_SELECTOR
예시: driver.find_element(By.CLASS_NAME, 'my-class')
예시: driver.find_element(By.CSS_SELECTOR, '.my-class')
3. 태그 선택자: By.TAG_NAME 또는 By.CSS_SELECTOR
예시: driver.find_element(By.TAG_NAME, 'div')
예시: driver.find_element(By.CSS_SELECTOR, 'div')
4. XPath 선택자: By.XPATH
예시: driver.find_element(By.XPATH, '//div[@class="my-class"]')
5. 속성 선택자: By.CSS_SELECTOR
예시: driver.find_element(By.CSS_SELECTOR, '[name="my-name"]')
6. 부모-자식 선택자: By.CSS_SELECTOR
예시: driver.find_element(By.CSS_SELECTOR, 'parent-tag > child-tag')
7. 형제 선택자: By.CSS_SELECTOR
예시: driver.find_element(By.CSS_SELECTOR, 'prev-tag + next-tag')
8. 포함 선택자: By.CSS_SELECTOR
예시: driver.find_element(By.CSS_SELECTOR, 'tag[attr*=value]')
728x90
반응형
'공부기록 > 파이썬' 카테고리의 다른 글
Selenium + MongoDB 크롤링한 데이터 저장하기 (0) | 2023.07.01 |
---|---|
Python + Selenium 도메인 여러 개 크롤링하기 (0) | 2023.06.30 |
Python + Selenium으로 크롤링 시작하기(예제 있음) (0) | 2023.06.29 |
Scrapy 프록시 설정 및 오류 해결 방법 Crawled (404) <GET https://domain/robots.txt> (referer: None) (0) | 2023.06.28 |
Scrapy & MongoDB(크롤링한 데이터 MongoDB에 저장하는 방법 & MongoDB 선택한 이유) (0) | 2023.06.28 |