본문 바로가기
Programming/Python

[Python] 파이썬 Selenium으로 웹 크롤링 (Web crawl with Python Selenium)

by 주리니e 2023. 7. 14.
728x90

[Python] 파이썬 Selenium으로 웹 크롤링 (Web crawl with Python Selenium)

 

 

Selenium은 웹 애플리케이션을 테스트하고 자동화하기 위한 도구로 주로 웹 브라우저를 제어하여 테스트 시나리오를 자동으로 수행하고 결과를 분석하는 데 사용된다. 다양한 언어를 지원하며 파이썬 외에도 C#, Ruby, Java, JavaScript로도 사용이 가능하다. Selenium을 이용하면 로그인, 회원가입, 데이터 입력 등 웹 사이트 폼 작업을 자동으로 수행할 수 있으며, 웹 페이지에서 데이터를 추출하고 필요한 정보를 수집도 가능하다. 예를 들어 뉴스 기사, 제품 가격 비교 등도 가능하다. 이러한 기능을 이용하면 우리가 웹에서 하는 단순 업무를 자동화할 수 있지 않을까?

Selenium is a tool for testing and automating web applications, primarily used to control web browsers to automatically perform test scenarios and analyze results. It supports a variety of languages and can be used in C#, Ruby, Java, and JavaScript in addition to Python. With Selenium, you can automatically perform website form tasks such as login, membership registration, and data entry, and extract data from web pages and collect necessary information. For example, news articles and product price comparisons are also possible. Wouldn't it be possible to automate the simple tasks that we do on the web with these features?

 

 

  • Selenium 테스트에 앞서..

파이썬 설치부터 VS Code 개발환경 세팅, 파이썬 가상환경까지 아래 링크를 통해 기본적인 세팅을 진행하자. 이미 아래와 같은 세팅이 되어있다면 다음 단계로 넘어가도 좋다.
From Python installation to VS Code development environment setting, let's proceed with basic settings through the link below. If you have already set up as below, you can move on to the next step.

 

[Windows] 윈도우에 파이썬(Python) 설치하기

[Windows] 윈도우에 파이썬(Python) 설치하기 Python 설치 아래 링크를 클릭하여 파이썬 홈페이지로 접속한다. Welcome to Python.org The official home of the Python Programming Language www.python.org 다운로드한 파일을

jiurinie.tistory.com

 

 

VS Code(Visual Studio Code)로 Python 개발환경 설정

VS Code(Visual Studio Code)로 Python 개발환경 설정 Visual Studio와 PyCharm은 모두 파이썬 개발에 많이 사용되는 통합 개발 환경(IDE)으로 어떤 IDE가 더 나은지는 개인의 선호도와 개발하는 프로젝트에 따라

jiurinie.tistory.com

 

 

[Python] 파이썬에서 가상환경 사용하기

[Python] 파이썬에서 가상환경 사용하기 가상환경을 사용하는 이유 프로젝트마다 독립된 파이썬 환경을 생성할 수 있다. 이는 프로젝트 간 라이브러리 충돌을 방지할 수 있고 하나의 프로젝트에

jiurinie.tistory.com



 

  • 기본 설정

원하는 위치에 crawler 디렉토리를 만들고 그 안에 venv라는 파이써 가상환경을 만들었다. 그리고 테스트할 crawler.py라는 파이썬 파일도 하나 생성한다.
I created a crawler directory in the desired location and created a pacer virtual environment called venv in it. It also creates a Python file called crawler.py to test.

 

 

  • Selinium 설치
> pip install selenium

# certificate verify failed 인증서 검증 오류 발생 시
> pip install --trusted-host pypi.python.org --trusted-host files.pythonhosted.org --trusted-host pypi.org selenium

 

 

  • 설치된 라이브러리 확인 (Check installed libraries)

Selinum4.10.0 버전과 관련 라이브러리들이 함께 설치된 것을 확인할 수 있다.
It can be seen that the Selinum 4.10.0 version and related libraries are installed together.

> pip freeze

 

 

  • crawler.py
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

chrome_options = Options()
chrome_options.add_experimental_option("detach", True) <<
driver = webdriver.Chrome(options=chrome_options)
driver.get("http://www.google.com")

위 코드는 Selinum을 이용하여 구글 사이트로 이동하는 코드이다. Selinium 버전 4 이전에서는 설치된 크롬의 버전을 확인한 후 해당하는 크롬 드라이버 설치 후 해당 경로를 webdriver.chrome()에 넣어주어야 했지만 Selenium 4부터는 Selenium Manager가 해당 버전에 맞는 웹 드라이버를 자동으로 넣어주기 때문에 크롬 드라이버를 따로 다운로드할 필요없이 간단하게 사용이 가능하다.
The above code is a code that uses Selinum to go to the Google site. Prior to Selinium Version 4, you had to check the installed version of Chrome, install the appropriate Chrome driver, and then put the path into the webdriver.chrome(), but from Selenium 4, the Selenium Manager automatically inserts the appropriate web driver for that version, making it easy to use without having to download the Chrome driver separately.


Selinium 4 버전에서 크롬 드라이버 경로를 지정하면 다음과 같이 오류가 나므로 Selenium 버전을 다운그레이드하거나 드라이버 경로 지정을 하지 말아야 한다.
If you specify the Chrome driver path in the Selinium 4 version, you should not downgrade the Selenium version or specify a driver path, as this error occurs.

selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain chromedriver using Selenium Manager; ‘str’ object has no attribute ‘capabilities’; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location

 

add_experimental_option("detach", True)를 사용하여 파이썬 소스가 종료되어도 WebDriver 프로세스는 백그라운드에서 
계속 실행되어 웹 브라우저를 제어하고 작업을 수행할 수 있도록 한다. 이 기능을 사용하지 않으면 
파이썬 소스코드 종료 시 바로 브라우저가 종료되기 때문에 웹 드라이버 옵션으로 넣어주었다.
When the Python source is shut down using add_experimental_option("detach", True), the WebDriver process is still in the background It continues to run, allowing you to control your web browser and perform tasks. If you do not use this feature I put it as a web driver option because the browser ends right after the Python source code ends.



  • crawler.py 실행
> .\crawler.py

Chrome is being controlled by automated test software

 

 

 

  • 구글 자동 검색 (Google Auto Search)

아래 코드는 구글에서 'Python Selenium' 을 입력하고 검색 버튼을 클릭하는 코드이다.
The code below is to enter 'Python Selenium' on Google and click the search button.

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By

chrome_options = Options()
chrome_options.add_experimental_option("detach", True)
driver = webdriver.Chrome(options=chrome_options)
driver.get("http://www.google.com")

driver.find_element(By.ID, 'APjFqb').send_keys('Python Selenium')
driver.find_element(By.XPATH, '/html/body/div[1]/div[3]/form/div[1]/div[1]/div[4]/center/input[1]').click()

 

 

  • HTML 엘리먼트 찾기 (Find HTML Elements)

아이디로 엘리먼트 찾기
Find an element with ID

driver.find_element(By.ID, 'APjFqb').send_keys('Python Selenium')

 

XPath로 엘리먼트 찾기
Find Element with XPath

driver.find_element(By.XPATH, '/html/body/div[1]/div[3]/form/div[1]/div[1]/div[4]/center/input[1]').click()

 

 

728x90

댓글