Search

selenium

๋ชฉ์ฐจ

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.
์ด๋ฏธ์ง€ ๋ฐ์ดํ„ฐ ์ €์žฅํ•˜๊ธฐ
โ€ข
ํด๋”์— ์ด๋ฏธ์ง€ ๋ฐ์ดํ„ฐ ๋‹ค์šด๋กœ๋“œ ๋ฐ›๊ธฐ