본문 바로가기

portfolio

파이썬 셀레니움을 통한 웹스크래핑 자동화(1. 스크롤기능, 2. 페이지네이션기능)

1. 픽셀을 더하면서 스크롤을 통해 자동으로 수직으로 내려간다. 파이썬에서 자바스크립트를 제어하려면 execute_script() 메서드를 사용해야한다.

# 스크롤기능 모듈화 
def scroll_next():
    scroll_pixels = 500 # 각 스크롤 단계마다 스크롤할 픽셀 수
    current_scroll_position = 0 # 처음 픽셀수0에서 시작 여기서 500씩 더해진다
    while True:
    # 스크롤 실행
    # window.scrollTo(0.500) x,y 수직 스크롤 
    #execute_script 메서드는 주어진 JavaScript 코드를 브라우저에서 실행
        driver.execute_script("window.scrollTo(0, {});".format(current_scroll_position))
        current_scroll_position += scroll_pixels
        time.sleep(5) # 스크롤 후 5초 대기

    # 스크롤 후 페이지 끝까지 도달한 경우 반복 종료
        if current_scroll_position >= driver.execute_script("return document.body.scrollHeight;"):
            break

 
 
1-1. 태그안에 태그를 반복문을 돌려서 찾는다 여기서는 제품이름, 가격을 찾는다.

# 모든 항목 요소 찾기 모듈화
def scroll_fac():
    # 태그안에 태그
    lis = driver.find_element(By.ID, '태그ID').find_elements(By.TAG_NAME, '태그이름')
    # find_elements안에 태그들에 반복문을 돌려 더 세부적인 제목,가격태그들을 찾게하였다.
    for li in lis:
        try:
            product = li.find_element(By.TAG_NAME, '태그이름').text
            price = li.find_element(By.CLASS_NAME, '클래스이름').text
            print(product)
            print(price)
        except Exception:
            pass

 
 
2. 페이지네이션 버튼을 클릭해 다음페이지로 넘어간다.

try:
    next_button = driver.find_element(By.XPATH, 'XPATH')
    # JavaScript를 사용하여 next_butoon 클릭!
    driver.execute_script("arguments[0].click();", next_button)
    # 5초 대기
    time.sleep(5)
except Exception as e:
    print(f"다음 페이지로 이동하는 중 오류가 발생했습니다: {e}")

# 다음 페이지로 넘어가면 5초 대기
time.sleep(5)

 
 
3. 결과 화면 
상단에 " Chrome이 자동화된 테스트 소프트웨어에 의해 제어되고 있습니다." 라고 적혀있다.

유명 해외이커머스 알리익스프레스 사이트를 크롤링하였다.

 
 
3-1. 출력 결과화면 

print()결과 화면입니다.