Web

Selenium과 Requests의 차이

만보만보잠만보 2023. 4. 29. 00:27

이 포스팅은 라이브러리에 대한 간단한 설명과 두 라이브러리의 차이점으로만 작성되어있습니다.

Requests

파이썬 3.7이상부터 지원한다.

HTTP 요청을 보내고 응답을 받는데 사용된다.

HTTP 요청은 GET과 POST가 있는데 GET은 서버에서 정보를 가져올 때 쓰이며, POST는 서버에 데이터를 보낼 때 쓴다.

(요청 메소드에 대한 설명은 추후에 다시 작성할 생각입니다.)

Requests를 쓸 때 GET요청을 보내고 응답 상태 코드를 확인해서 웹 페이지에 맞게 접속 했는지 확인할 수 있다.

웹 페이지에서 특정 정보를 추출할 때 쓴다.

import requests

response = requests.get('https://www.python.org')

if response.status_code == 200:
    print('Success!')
elif response.status_code == 404:
    print('Not Found.')

print(response.json())

python.org에 GET 요청을 보내고 응답상태 코드를 확인한다음 상태 코드에 따라 출력물을 다르게 하고 응답의 JSON 내용을 출력하는 코드

Selenium

웹 브라우저와 JS와의 상호작용, 자동화와 관련되어있다.

셀레니움의 경우에는 응답 상태 코드를 알 수는 없지만 웹 페이지를 열고 해당 페이지의 제목이나 내용의 정보들이 있는지 없는지로 판단이 가능하다.

웹페이지에서 클릭, 스크롤, 드래그, 파일열기등 다양한 작업이 가능하다.

자바스크립트를 실행할 수 있다.

웹 페이지를 직접 열어서 동작하기때문에 Requests에 비해 시간이 오래걸린다.

크롬이나 파이어폭스같은 웹 드라이버 설치가 별도로 필요하다.

 

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.by import By

driver = webdriver.Chrome(service=Service(ChromeDriverManager().install())) #현재 OS에 설치된 크롬경로로 함

driver.get("https://www.python.org")

search_bar = driver.find_element(By.ID, 'q') #q 태그 찾기
search_bar.send_keys("getting started with python")
search_bar.submit()

print(driver.title)

driver.quit()

크롬을 열고 Python.org에 접속한다음 검색창에 "getting started with python"을 검색한다음 제출하고 페이지의 제목을 출력하고 브라우저를 닫는 코드