설치/설정 가이드가 포함된 Python의 셀레늄 스크래핑

Selenium을 사용하면 웹사이트에서 데이터 가져오기(웹 스크래핑), 양식 작성, 웹사이트 탐색을 위한 일부 자동화된 작업(좋아요 또는 댓글 봇) 등 웹 관련 작업을 자동화할 수 있습니다.

이러한 모든 작업은 헤드리스 브라우저를 사용하여 수행됩니다. 헤드리스 브라우저는 HTTP 요청을 만들고 세션 정보를 유지할 수 있는 눈에 보이는 GUI가 없는 브라우저에 지나지 않습니다.

웹 사이트에서 기본 작업을 수행하고 일부 정보를 가져오는 데 중점을 둡니다.

전제 조건


  • 셀레늄 작동 방식을 이해하려면 기본 HTML 지식이 있어야 합니다.
  • DOM에 대한 이해가 도움이 될 것입니다.

  • 첫 번째 설치는 플랫폼에 관계없이 시작하는 데 세 가지가 필요합니다.

  • 셀렌pip install selenium를 사용하여 셀레늄 설치

  • 헤드리스 브라우저
    이 튜토리얼에서는 크롬의 chromedriver를 사용할 것입니다. 또는 geckodriver라는 파이어폭스 헤드리스 브라우저를 사용할 수 있습니다.
    this link에서 Chromedriver를 설치합니다.
    this link에서 Geckodriver를 설치합니다.

  • GUI가 있는 웹 브라우저
    다음 명령어를 사용하여 Chrome을 설치합니다.

  • wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
    sudo apt install ./google-chrome-stable_current_amd64.deb
    


    Firefox가 대부분의 Linux 배포판에 설치되어 있다고 가정합니다. 그렇지 않은 경우 this link을 사용할 수 있습니다.

    이제 시간을 낭비하지 않고 첫 번째 데모를 만들어 보겠습니다.
    필수 패키지.

    import selenium
    from selenium import webdriver
    from selenium.webdriver import chrome
    from selenium.webdriver.chrome.service import Service
    


    이제 다음을 사용하여 웹 사이트를 열겠습니다.

    s = Service("chromedriver.exe")
    driver = webdriver.Chrome(service=s)
    driver.get("https://rugsforyou.in/")
    


    Service 클래스는 실행 파일 경로를 요구합니다. Python 파일과 같은 폴더에 chromedriver.exe가 있습니다.
    Firefox를 선호하는 경우 geckodriver.exe를 사용할 수도 있습니다.

    webdriver.Chrome은 크롬 드라이버의 새 인스턴스를 생성합니다.

    webdriver 정보 - webdriver는 명령을 수락하고 결과를 반환하기 위해 브라우저로 보내는 Selenium의 구성 요소입니다. Webdriver.Chrome은 서비스 클래스에 대한 참조를 사용하여 제공하는 chromedriver용 실행 파일을 요구합니다.

    .get() 메서드는 현재 브라우저 세션에서 웹 페이지를 로드하는 방법입니다. 간단히 말해서 제공된 URL에 대한 HTTP 요청을 생성합니다.

    이제 셀레늄을 사용하여 간단한 자동화를 만들어 보겠습니다. 그러면 이 멋진 전자 상거래 사이트가 열리고 검색 표시줄에 값을 입력한 다음 결과가 표시됩니다.
    이를 위해 다른 클래스 By를 가져와야 합니다.
    from selenium.webdriver.common.by import By
    # in continuation to the above code
    send_data = driver.find_element(By.CLASS_NAME, value="ms-search-field")
    send_data.send_keys("flower")
    send_data.submit()
    


    한 줄씩 진행하면서 검색 필드의 클래스인 클래스 이름 "ms-search-field"에 대한 액세스를 제공하는 기능과 같은 돔을 사용하고 있습니다.
    By를 사용하면 CLASS_NAME 또는 ID와 같은 로케이터를 정의할 수 있습니다.
    .send_keys("value")는 "ms-search-field"가 입력 필드인 경우 입력 필드에 입력할 수 있는 값을 보유합니다.
    .submit()은 양식을 제출합니다.

    그렇게 하면 크롬의 새 창이 열리고 지정된 웹사이트가 열리고 검색 필드에 "꽃"을 입력하고 결과가 표시됩니다.

    결과 웹 사이트 URL에 액세스하려면 .current_url 객체를 사용할 수 있습니다. 예를 들어 - print(driver.current_url)

    헤드리스 브라우저 사용



    헤드리스 상태에서 이 프로그램을 실행하려면 다음 명령을 추가하기만 하면 됩니다.
    from selenium.webdriver.chrome.options import Options
    # continuation to above code
    opts = Options()
    opts.headless = True
    # change the arguments of Chrome class
    driver = webdriver.Chrome(options=opts, service=s)
    


    이렇게 하면 크롬 브라우저가 열리지 않지만 여전히 데이터를 로드하고 결과를 터미널에 인쇄합니다.

    다시 GUI로 되돌리려면 Chrome()에서 제거options=opts하십시오.
    이제 이 시점에서 왜 그렇게 많은 패키지를 가져왔는지 궁금하실 것입니다. 요약하자면.

    좋은 웹페이지 즐겨찾기