>  기사  >  백엔드 개발  >  Python 동적 웹 스크래핑 예제: Selenium 및 webdriver 적용

Python 동적 웹 스크래핑 예제: Selenium 및 webdriver 적용

PHPz
PHPz원래의
2024-08-23 16:30:371115검색

Python dynamic web scraping example: application of selenium and webdriver

동적 웹 스크래핑은 일반적으로 HTTP 요청을 처리하기 위한 요청, 브라우저 동작을 시뮬레이션하기 위한 셀레늄 또는 pyppeteer와 같은 일부 Python 라이브러리를 사용합니다. 다음 글은 셀레늄의 활용에 초점을 맞출 것입니다.

셀레늄에 대한 간략한 소개

Selenium은 웹 애플리케이션 테스트를 위한 도구이지만 특히 JavaScript에 의해 동적으로 생성된 웹 콘텐츠를 스크랩해야 하는 경우 웹 스크래핑에도 자주 사용됩니다. Selenium은 클릭, 텍스트 입력, 웹 페이지 요소 가져오기 등 브라우저에서 사용자 동작을 시뮬레이션할 수 있습니다.

Python 동적 웹 스크래핑 예

먼저 셀레늄이 설치되어 있는지 확인하세요. 그렇지 않은 경우 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에서 동적 웹페이지를 스크랩할 때 프록시 설정

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.