파이썬 Selenium을 통한 크롤링 방법
웹 크롤링은 데이터를 수집하거나 자동화된 테스트를 수행하는 데 매우 유용한 기술입니다. 이번 포스팅에서는 파이썬의 Selenium 라이브러리를 사용하여 간단한 웹 크롤링 작업을 수행하는 방법을 소개하겠습니다.
- 저의 블로그를 크롤링하는 예시입니다.
Selenium은 웹 브라우저를 자동화할 수 있는 강력한 도구로, 다양한 웹 페이지에서 데이터를 수집하거나 상호작용을 자동화하는 데 사용됩니다. 아래 예제 코드는 구글 검색을 통해 특정 키워드를 검색하고, 검색 결과를 클릭한 후 내용을 확인하는 작업을 자동화한 것입니다.
필요한 라이브러리 설치
먼저, Selenium과 웹드라이버를 설치해야 합니다. 다음 명령어를 사용하여 설치할 수 있습니다.
pip install selenium
크롬 드라이버는 ChromeDriver 페이지에서 다운로드하여 설치해야 합니다. 다운로드한 드라이버의 경로를 설정해 줍니다.
코드 설명
필요한 모듈 임포트
from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
from datetime import datetime
먼저, Selenium을 사용하기 위해 필요한 모듈을 임포트합니다. 여기에는 웹드라이버, 서비스, 요소 찾기(By), 키 조작(Keys), 웹드라이버 대기(WebDriverWait) 및 조건(expected_conditions) 등이 포함됩니다.
요소 찾기 및 클릭 함수
def find_and_click_element(driver, xpath):
found = False
while not found:
try:
element = driver.find_element(By.XPATH, xpath)
element.click()
time.sleep(1)
con_xpath = '//*[@id="content"]/div[2]/div[1]/a/span[2]'
find_content = driver.find_element(By.XPATH, con_xpath)
find_content.click()
time.sleep(2)
driver.back()
found = True
time.sleep(2)
except:
movescroll = driver.find_element(By.CSS_SELECTOR, 'body')
movescroll.send_keys(Keys.PAGE_DOWN)
time.sleep(3)
time.sleep(2)
return found
이 함수는 주어진 XPath 요소를 찾아 클릭합니다. 요소가 없으면 페이지를 스크롤하여 다시 찾습니다. 스크롤은 send_keys(Keys.PAGE_DOWN)을 사용하여 수행됩니다.
[브라우저에서 XPath 찾기]
- Chrome 브라우저를 열고, 검사하려는 웹 페이지로 이동합니다.
- 검사하려는 요소 위에서 오른쪽 클릭을 하고 "검사"를 선택합니다.(F12키 눌러도 됨)
- 개발자 도구 왼쪽 상단 버튼 클릭
- 개발자 도구에서 요소를 마우스 오른쪽 버튼으로 클릭하고 "Copy" > "Copy XPath"를 선택합니다.
크롤링 작업 수행 함수
def operate(keywords):
try:
service = ChromeService()
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=service, options=options)
driver.get("http://www.google.com")
search_box = driver.find_element(By.NAME, "q")
search_box.send_keys(keywords)
search_box.submit()
# Wait for search results to load
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "rso")))
xpath = '//*[@id="rso"]/div[1]/div/div/div/div[1]/div/div/span/a/h3'
find_and_click_element(driver, xpath)
time.sleep(5)
driver.quit()
c_time = datetime.now()
y_time = c_time.year
m_time = c_time.month
d_time = c_time.day
h_time = c_time.hour
min_time = c_time.minute
t = f"{y_time}.{m_time}.{d_time}.{h_time}.{min_time}"
print(f"{t} {i+1}회 {keywords}")
time.sleep(5)
except Exception as e:
print(f"Error: {e}")
driver.quit()
pass
이 함수는 주어진 키워드로 구글 검색을 수행하고, 검색 결과의 첫 번째 링크를 클릭한 후 해당 페이지에서 특정 요소를 찾습니다. 그런 다음, 드라이버를 종료하고 현재 시간을 출력합니다.
메인 함수
if __name__ == "__main__":
keywords = 'it together tistory'
operate(keywords)
메인 함수는 operate 함수를 호출하여 구글 검색 작업을 시작합니다.
결론
Selenium을 사용하면 다양한 웹 페이지에서 자동화된 상호작용을 쉽게 구현할 수 있습니다. 이 예제 코드를 통해 구글 검색과 검색 결과 클릭을 자동화하는 방법을 배웠습니다. 이를 바탕으로 더 복잡한 웹 크롤링 작업을 수행할 수 있을 것입니다.
Selenium의 다양한 기능을 활용하여 여러분만의 웹 크롤러를 만들어보세요!
'자동화' 카테고리의 다른 글
[202407] 시스템 프로세스 및 서비스 모니터링 및 관리 프로그램 (0) | 2024.07.28 |
---|---|
[202407] 네이버 지도 API 클라이언트 ID와 SECRET 발급 방법 (2) | 2024.07.22 |
[202407] 크롬 및 크롬드라이버 버전 114 설치 방법 (3) | 2024.07.22 |
[202407] 마우스 자동 반복 클릭 프로그램(다운로드) pw : 1993 (1) | 2024.07.18 |
[202407] 엑셀 파일 합치기 프로그램 [필터 제거, 컬럼 추출 포함](다운로드) (1) | 2024.07.17 |