웹 브라우저 자동화 - Selenium : 3-2. 브라우저 자동화하기, Selenium

임동윤·2022년 9월 29일
0

웹 스크래핑 기초

목록 보기
12/20
post-thumbnail

Selenium 설치 & 사용하기

Selenium 라이브러리

  • Selenium은 Python을 이용해서 웹 브라우저를 조작할 수 있는 자동화 프레임워크 입니다.

설치하기

  • pip install 을 이용하여 Selenium 프레임워크를 설치한다.
%pip install selenium
  • 웹 브라우저와 연동을 위해서는 WebDriver 가 필요합니다.
    동일하게 pip install 을 이용하여 설치합니다.

Selenium 시작하기

  • selenium 으로부터 webdriver 모듈을 불러옵니다.
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
  • 불러온 모듈 webdriver에서 Chrome() 객체를 생성합니다.
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
driver.get("http://www.example.com")
  • 응답을 받은 후 page_source 속성을 통해 Response의 HTML 문서를 확인할 수 있습니다.
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
driver.get("http://www.example.com")
print(driver.page_source)
<html><head>
    <title>Example Domain</title>

    <meta charset="utf-8">
    <meta http-equiv="Content-type" content="text/html; charset=utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <style type="text/css">
    body {
        background-color: #f0f0f2;
        margin: 0;
        padding: 0;
        font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
       
    }
    div {
        width: 600px;
        margin: 5em auto;
        padding: 2em;
        background-color: #fdfdff;
        border-radius: 0.5em;
        box-shadow: 2px 3px 7px 2px rgba(0,0,0,0.02);
    }
    a:link, a:visited {
        color: #38488f;
        text-decoration: none;
    }
    @media (max-width: 700px) {
        div {
            margin: 0 auto;
            width: auto;
        }
    }
    </style>    
</head>

<body>
<div>
    <h1>Example Domain</h1>
    <p>This domain is for use in illustrative examples in documents. You may use this
    domain in literature without prior coordination or asking for permission.</p>
    <p><a href="https://www.iana.org/domains/example">More information...</a></p>
</div>


</body></html>
  • Driver 를 통해 프로그램을 실행하면 Chrome 창이 계속 켜져있게 됩니다. 이때 with-as 구문을 이용해서 주어진 명령이 끝나면 Driver를 종료하도록 설정할 수 있습니다.
with webdriver.Chrome(service=Service(ChromeDriverManager().install())) as driver:
    driver.get("http://www.example.com")
    print(driver.page_source)

Driver에서 특정 요소 추출하기

selenium은 이미 브라우저를 활용하기 때문에 받아온 응답으로부터 특정 요소를 추출할 수도 있습니다.

요소 하나 찾기

  • .find_element(by, target)
    • by : 대상을 찾는 기준 : ID, TAG_NAME, CLASS_NAME, ...
    • target : 대상의 속성

요소 여러개 찾기

  • .find_elements(by, target)
    • by : 대상을 찾는 기준 : ID, TAG_NAME, CLASS_NAME, ...
    • target : 대상의 속성
  • p 태그에 해당하는 요소를 하나 찾습니다.
from selenium.webdriver.common.by import By
with webdriver.Chrome(service=Service(ChromeDriverManager().install())) as driver:
    driver.get("http://www.example.com")
    print(driver.find_element(By.TAG_NAME, "p").text)
This domain is for use in illustrative examples in documents. You may use this domain in literature without prior coordination or asking for permission.
  • p 태그에 해당하는 요소 여러개를 찾습니다.
with webdriver.Chrome(service=Service(ChromeDriverManager().install())) as driver:
    driver.get("http://www.example.com")
    for element in driver.find_elements(By.TAG_NAME, "p"):
        print("Text : ", element.text)
Text :  This domain is for use in illustrative examples in documents. You may use this domain in literature without prior coordination or asking for permission.
Text :  More information...

profile
AI Tensorflow Python

0개의 댓글