selenium
โข
๋์ ์ผ๋ก ๋ธ๋ผ์ฐ์ ์ ์ด
โข
์ง์ ๋ธ๋ผ์ฐ์ ๋ฅผ ์คํํ์ฌ python code๋ก mouse click, keyboard input ๋ฑ์ event๋ฅผ ๋ฐ์์ํด
โข
์ค์ ๋ธ๋ผ์ฐ์ ๋ก ์คํํ ๊ฒ๊ณผ ๋์ผํ ๊ฐ์ ์ป์ ์ ์์
โข
์๋๊ฐ ๋๋ฆผ
โข
pip install selenium
์ฌ์ ์ค๋น - ํฌ๋กฌ ๋๋ผ์ด๋ฒ
โข
PC์ ์ค์น๋ ํฌ๋กฌ ๋ฒ์ ํ์ธ
โฆ
chrome://settings/help
โข
ํฌ๋กฌ ๋๋ผ์ด๋ฒ ์ค์น ํ์ด์ง ์ด๋
โข
ํฌ๋กฌ ๋ฒ์ , OS์ ์๋ง๋ ๋๋ผ์ด๋ฒ๋ฅผ ์ ํํ์ฌ ๋ค์ด๋ก๋
โข
chromedriver.exe ํ์ผ์ ipynb ํ์ผ ์คํ ๊ฒฝ๋ก๋ก ์ด๋์ํค๊ธฐ
์ฌ์ฉ ๋ฐฉ๋ฒ
from selenium import webdriver
# ํฌ๋กฌ์ฐฝ์ ์ง์ ์คํ
driver= webdriver.Chrome()
# ํฌ๋กฌ๋๋ผ์ด๋ฒ ๊ฒฝ๋ก๋ฅผ ์ง์ ํ์ฌ ํธ์ถํ ๊ฒฝ์ฐ, ์๋ ์ฝ๋ ์ฌ์ฉ
#driver= webdriver.Chrome(executable_path=r'C:\Users\Downloads\chromedriver_win64\chromedriver.exe')
driver.get('์ ์ํ ์ฌ์ดํธ์ฃผ์')
html = driver.page_source
# BeautifulSoup์ ํ์ฉํ์ฌ ๋ฐ์ดํฐ ํ์ฑ
soup = BeautifulSoup(html, 'html.parser')
Python
๋ณต์ฌ
[์ค์ต] ๋ค์ด๋ฒ ๊ฒ์
โข
โChromeโ ๋ธ๋ผ์ฐ์ ๋ฅผ ์คํ์์ผ์ ๋ค์ด๋ฒ(www.naver.com)์ ์คํ์์ผ ๊ฒ์์ฐฝ์ โํ์ด์ฌโ์ ์
๋ ฅํ๊ณ ๊ฒ์ ๊ฒฐ๊ณผ๋ฅผ ํ์ธ
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
# ํฌ๋กฌ์ฐฝ์ ์ง์ ์คํ
driver = webdriver.Chrome()
# ์ฃผ์ ์ฐฝ์ ๋ค์ด๋ฒ URL ์
๋ ฅ
driver.get("http://www.naver.com")
# ๊ฒ์์ฐฝ("query")์ "ํ์ด์ฌ" ์
๋ ฅํ๊ณ ์ํฐํค ์คํ
driver.find_element(By.NAME, "query").send_keys("ํ์ด์ฌ" + Keys.ENTER)
Python
๋ณต์ฌ
์ฃผ์ ๊ธฐ๋ฅ
๋ฉ์๋ | ์ค๋ช
|
find_elements_by_id | ID ์์ฑ์ผ๋ก ์น ํ์ด์ง์ ๊ตฌ์ฑ ์์ ์ฐพ๊ธฐ |
find_elements_by_class_name | ํด๋์ค ์ด๋ฆ(class name)์์ฑ์ผ๋ก ์น ํ์ด์ง์ ๊ตฌ์ฑ ์์ ์ฐพ๊ธฐ |
find_elements_by_css_selector | CSS(CSS selector) ์์ฑ์ผ๋ก ์น ํ์ด์ง์ ๊ตฌ์ฑ ์์ ์ฐพ๊ธฐ |
find_elements_by_name | ์ด๋ฆ(name) ์์ฑ์ผ๋ก ์น ํ์ด์ง์ ๊ตฌ์ฑ ์์ ์ฐพ๊ธฐ |
find_elements_by_xpath | Xpath ์์ฑ์ผ๋ก ์น ํ์ด์ง์ ๊ตฌ์ฑ ์์ ์ฐพ๊ธฐ |
์ฃผ์ ํค ์ด๋ฒคํธ | ์ค๋ช
|
clear() | ์
๋ ฅ์ฐฝ ์์ฑ ๋ฌธ๊ตฌ ์ญ์ |
key_down() | ํค๋ฅผ ๋๋ฅด๊ณ ์๋ ์ํ |
key_up() | ํค๋ฅผ ๋๋ฅด๊ณ ์๋ ์ํ๋ฅผ ํด์ |
send_keys() | ํน์ ํค ์ด๋ฒคํธ ๋๋ ์
๋ ฅ๋ฌธ์ฅ์ ์ ๋ฌ |
Keys | ์ค๋ช
|
Keys.ENTER | ์ํฐ(Enter)ํค |
Keys.ALT | ์ํธ(Alt)ํค |
Keys.SHIFT | ์ํํธ(Shift)ํค |
Keys.CONTROL | ์ปจํธ๋กค(Control)ํค |
(์์) ์น ํ์ด์ง์์ Ctrl + c ๋ฅผ ์คํ
# Ctrl ํค๋ฅผ ๋๋ฅด๊ณ ์๋ ์ํ์์ c ํค๋ฅผ ๋๋ฆ
webdriver.ActionChains(driver).key_down(Keys.CONTROL).send_keys("c").perform()
Python
๋ณต์ฌ
[์ค์ต] ํธ๋ฆฝ์ด๋๋ฐ์ด์ ์ด๋ฏธ์ง
โข
ํฌ๋กค๋ง ์ฌ์ดํธ: https://www.tripadvisor.co.kr/Restaurants-g294197-Seoul.html
โข
ํฌ๋กค๋ง ์ ์ฐจ
1.
๋ธ๋ผ์ฐ์ ๋ฅผ ์ง์ ์คํํด์ ์ฌ์ดํธ์ html์ ์ฝ์ด๋ค์ด๊ธฐ
โข
options.headless = True (ํฌ๋กฌ์ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์คํ)
2.
ํฌ๋กฌ์ฐฝ์ ์ง์ ์คํํด์ html ํ์ด์ง๋ฅผ ๋ฐ์์ด
3.
ํ
์คํธ ํํ์ ๋ฐ์ดํฐ๋ฅผ html ํ๊ทธ๋ณ๋ก ๊ตฌ๋ถํ์ฌ ํ์ฑํ๊ธฐ : BeutifulSoup
4.
ํน์ ํ๊ทธ๊ฐ ์ฐพ๊ธฐ : findAll, findํ์ํ ๋ฐ์ดํฐ๊ฐ ์ ์ ํ๊ธฐ
5.
์ด๋ฏธ์ง ๋ฐ์ดํฐ ์ ์ฅํ๊ธฐ
โข
ํด๋์ ์ด๋ฏธ์ง ๋ฐ์ดํฐ ๋ค์ด๋ก๋ ๋ฐ๊ธฐ