동적 웹 스크래핑은 일반적으로 HTTP 요청을 처리하기 위한 요청, 브라우저 동작을 시뮬레이션하기 위한 셀레늄 또는 pyppeteer와 같은 일부 Python 라이브러리를 사용합니다. 다음 글은 셀레늄의 활용에 초점을 맞출 것입니다.
Selenium은 웹 애플리케이션 테스트를 위한 도구이지만 특히 JavaScript에 의해 동적으로 생성된 웹 콘텐츠를 스크랩해야 하는 경우 웹 스크래핑에도 자주 사용됩니다. Selenium은 클릭, 텍스트 입력, 웹 페이지 요소 가져오기 등 브라우저에서 사용자 동작을 시뮬레이션할 수 있습니다.
먼저 셀레늄이 설치되어 있는지 확인하세요. 그렇지 않은 경우 pip를 통해 설치할 수 있습니다.
pip install selenium
해당 브라우저에 맞는 WebDriver도 다운로드해야 합니다. Chrome 브라우저를 사용한다고 가정하면 ChromeDriver를 다운로드하고 해당 경로가 시스템 환경 변수에 추가되었는지 확인하거나 코드에서 직접 경로를 지정할 수 있습니다.
다음은 웹페이지 제목을 가져오는 간단한 예입니다.
from selenium import webdriver from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager # Setting up webdriver driver = webdriver.Chrome(service=Service(ChromeDriverManager().install())) # Open the webpage driver.get('https://www.example.com') # Get the webpage title title = driver.title print(title) # Close the browser driver.quit()
이 스크립트는 example.com을 열고 제목을 가져온 후 인쇄합니다.
webdriver_manager는 WebDriver 버전을 자동으로 관리하는 타사 라이브러리입니다. 사용하지 않으려면 WebDriver를 수동으로 다운로드하고 경로를 지정할 수도 있습니다.
동적 웹페이지에는 JavaScript로 렌더링된 콘텐츠가 포함될 수 있습니다. 셀레늄은 작동하기 전에 이러한 요소가 로드될 때까지 기다릴 수 있으며, 이는 이러한 웹 페이지를 처리하는 데 매우 적합합니다.
Python을 사용하여 동적 웹페이지를 크롤링할 때 프록시를 사용하는 경우가 많습니다. 프록시를 사용하면 한편으로는 많은 장애물을 피하고 다른 한편으로는 작업 효율성을 높일 수 있습니다.
위에서 셀레늄 설치에 대해 소개해드렸습니다. 또한 해당 브라우저의 WebDriver도 다운로드하여 해당 경로가 시스템 환경 변수에 추가되어 있는지 확인하거나 코드에서 직접 경로를 지정할 수 있습니다.
위 단계를 완료한 후 프록시를 구성하고 동적 웹 페이지를 스크랩할 수 있습니다.
from selenium import webdriver from selenium.webdriver.chrome.options import Options # Set Chrome options chrome_options = Options() chrome_options.add_argument('--proxy-server=http://your_proxy_ip:port') # Specify the WebDriver path (if you have added the WebDriver path to the system environment variables, you can skip this step) # driver_path = 'path/to/your/chromedriver' # driver = webdriver.Chrome(executable_path=driver_path, options=chrome_options) # If WebDriver path is not specified, the default path is used (make sure you have added WebDriver to your system environment variables) driver = webdriver.Chrome(options=chrome_options) # Open the webpage driver.get('https://www.example.com') # Get the webpage title title = driver.title print(title) # Close the browser driver.quit()
이 예에서 --proxy-server=http://your_proxy_ip:port는 프록시 구성을 위한 매개 변수입니다. your_proxy_ip 및 port를 실제로 프록시 서버의 IP 주소 및 포트 번호로 바꿔야 합니다. 사용하세요.
프록시 서버에 인증이 필요한 경우 다음 형식을 사용할 수 있습니다.
chrome_options.add_argument('--proxy-server=http://username:password@your_proxy_ip:port')
사용자 이름과 비밀번호는 프록시 서버의 사용자 이름과 비밀번호입니다.
위 코드를 실행한 후 Selenium은 구성된 프록시 서버를 통해 대상 웹 페이지에 액세스하고 웹 페이지 제목을 인쇄합니다.
ChromeDriver의 경로를 어떻게 지정하나요?
ChromeDriver는 Selenium WebDriver의 일부입니다. WebDriver API를 통해 Chrome 브라우저와 상호작용하여 자동화된 테스트 및 웹 크롤러와 같은 기능을 구현합니다.
ChromeDriver의 경로 지정에는 주로 환경 변수 구성이 포함됩니다. 구체적인 단계는 다음과 같습니다.
1. 크롬 설치 위치 찾기
바탕화면의 구글 크롬 바로가기를 마우스 오른쪽 버튼으로 클릭한 뒤 '파일 위치 열기'를 선택하면 찾을 수 있다.
2. 시스템 환경변수 Path
에 Chrome 설치 경로를 추가합니다.
이를 통해 시스템은 어느 위치에서나 ChromeDriver를 인식할 수 있습니다.
3. ChromeDriver 다운로드 및 압축 해제
반드시 Chrome 브라우저 버전에 맞는 ChromeDriver를 다운로드하고 exe 프로그램에 압축을 풀어주세요.
4. ChromeDriver의 exe 파일을 Chrome 설치 경로에 복사하세요
이렇게 하면 ChromeDriver를 사용해야 할 때 시스템이 자동으로 인식하여 호출할 수 있습니다
위는 Python 동적 웹 크롤링에서 Selenium과 webdriver를 적용한 내용과 웹페이지 크롤링 시 이를 방지하는 방법입니다. 물론, 위의 예시를 통해 실제 동작을 연습해 볼 수도 있습니다.
위 내용은 Python 동적 웹 스크래핑 예제: Selenium 및 webdriver 적용의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!