๐Ÿ–ฑ๏ธ[Crawling] ๋„ค์ด๋ฒ„ ์ž๋™๋กœ๊ทธ์ธ

๊ถŒ๊ทœ๋ฆฌยท2023๋…„ 5์›” 25์ผ
0

Crawling

๋ชฉ๋ก ๋ณด๊ธฐ
6/7
post-thumbnail

๐Ÿ“ข ์—ฌ๋Š” ๋ง
ํฌ๋กค๋ง์— ๋Œ€ํ•ด ์กฐ๊ธˆ ์ต์ˆ™ํ•ด์ง€์ž๋งˆ์ž ํ•ญ์ƒ ๊ถ๊ธˆํ–ˆ๋˜ ์ž๋™๋กœ๊ทธ์ธ์„ ๋ฐ”๋กœ ์‹ค์Šตํ•ด๋ณด๊ธฐ๋กœ ํ–ˆ๋‹ค. ์ตœ๋Œ€ํ•œ ์•„๋Š” ๊ฒƒ์„ ํ™œ์šฉํ•˜๋ฉด์„œ ๋งŒ๋“ค์–ด๋ณผ ์˜ˆ์ •์ด์—ˆ๋Š”๋ฐ ์ƒ๊ฐ๋ณด๋‹ค ํ—ค๋งจ ๋ถ€๋ถ„๊ณผ ์ƒˆ๋กญ๊ฒŒ ์•Œ๊ฒŒ๋œ ์ ์ด ์žˆ์—ˆ๊ธฐ์— ์ •๋ฆฌ๋ฅผ ํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค.



01. ํŽ˜์ด์ง€ ์—ฐ๊ฒฐ

driver.get("https://nid.naver.com/nidlogin.login?mode=form&url=https://www.naver.com/")

๋กœ๊ทธ์ธ ์ž๋™ํ™”๊ฐ€ ์‹คํ–‰๋˜์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ž๋™ํ™” ์‹œ์ž‘ํŽ˜์ด์ง€๋ฅผ ๋กœ๊ทธ์ธ ํ™”๋ฉด์œผ๋กœ ์„ค์ •ํ–ˆ๋‹ค.


02. Id, Pw ์ž๋™ ์ž…๋ ฅ

๐Ÿ“ ์ฒซ ๋ฒˆ์งธ ์ž‘์„ฑํ•œ ์ฝ”๋“œ

#CSS ์„ ํƒ์ž๋ฅผ ์„ ํƒํ•˜๊ณ  ํ•ด๋‹น HTML๋ถ€๋ถ„ ์ฐพ๊ธฐ
id= driver.find_element(By.CSS_SELECTOR, "#id") 
#ํ•ด๋‹น HTML ๋ถ€๋ถ„ ํด๋ฆญ
id.click()
#ํ‚ค๋ณด๋“œ๋กœ Id ์ž…๋ ฅ
id.send_keys("kknd2848")

์ด๋ ‡๊ฒŒ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋‹ˆ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒผ๋‹ค. ๋„ˆ๋ฌด ๋น ๋ฅด๊ฒŒ ์ž๋™์œผ๋กœ ์•„์ด๋””๊ฐ€ ์ž…๋ ฅ๋˜์–ด ์ž๋™์ž…๋ ฅ๋ฐฉ์ง€๋ฌธ๊ตฌ๊ฐ€ ๋– ์„œ ๋กœ๊ทธ์ธ์ด ์•ˆ๋˜๋Š” ์ƒํ™ฉ์ด๋‹ค.

id.send_keys("kknd2848") ์ด ๋ถ€๋ถ„์€ ํ‚ค๋ณด๋“œ๋กœ Id๋ฅผ ์ž…๋ ฅํ•˜๊ฒ ๋‹ค๋Š” ๋œป์ธ๋ฐ, ์ด ๋ช…๋ น์–ด ๋•Œ๋ฌธ์— ์ž๋™์ž…๋ ฅ๋ฐฉ์ง€๋ฌธ๊ตฌ๊ฐ€ ๋œจ๋Š” ๊ฒƒ ๊ฐ™์•„ ๋ฐ‘์—์™€ ๊ฐ™์ด ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ–ˆ๋‹ค.

๐Ÿ“ ๋‘ ๋ฒˆ์งธ ์ž‘์„ฑํ•œ ์ฝ”๋“œ

id= driver.find_element(By.CSS_SELECTOR, "#id")
id.click()
pyperclip.copy("kknd2848") 
pyautogui.hotkey("ctrl","v")

pyperclip.copy("kknd2848") ์€ ๊ด„ํ˜ธ ์•ˆ์— ์žˆ๋Š” ๊ฒƒ์„ ํด๋ฆฝ๋ณด๋“œ์— ๋ณต์‚ฌํ•œ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค. ์ด ๋ณต์‚ฌํ•œ ๊ฐ’์„ pyautogui.hotkey("ctrl","v")์„ ํ†ตํ•ด ๋ถ™์—ฌ๋„ฃ๊ธฐ ํ•ด์ฃผ์—ˆ๋‹ค. hotkey() ํ•จ์ˆ˜๋Š” ์—ฌ๋Ÿฌํ‚ค๋ฅผ ๋™์‹œ์— ์ž…๋ ฅํ•  ๋•Œ, keyDown๊ณผ keyUp์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ถˆํŽธํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉํ•œ๋‹ค.

์ด๋ ‡๊ฒŒ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•ด์ฃผ์—ˆ๋”๋‹ˆ ์ž๋™์ž…๋ ฅ๋ฐฉ์ง€๋ฌธ๊ตฌ๊ฐ€ ๋œจ์ง€ ์•Š๊ณ  ์ •์ƒ์ ์œผ๋กœ ๋กœ๊ทธ์ธ์ด ๋˜์—ˆ๋‹ค. โœจ

๐Ÿ“Œ ์œ„์— ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด import ๊ตฌ๋ฌธ๋„ ์ถ”๊ฐ€ํ•ด์ค˜์•ผ ํ•œ๋‹ค.

import pyautogui
import pyperclip

03. ํ™”๋ฉด ์ตœ๋Œ€

์ž๋™ ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ณ  ๋‚˜์„œ ๋ณด๋‹ˆ๊นŒ ํ™”๋ฉด์ด ๋„ˆ๋ฌด ์ž‘๋‹ค. ๊ทธ๋ž˜์„œ ํ™”๋ฉด์„ ์ตœ๋Œ€๋กœ ๋Š˜๋ฆด ์ˆ˜ ์žˆ๋Š” ๋ช…๋ น์–ด๋ฅผ ์ฐพ์•„์„œ ์ž‘์„ฑํ•ด์—ˆ๋”๋‹ˆ ํ™”๋ฉด์ด ํฌ๊ฒŒ ๋‚˜ํƒ€๋‚ฌ๋‹ค.

driver.maximize_window()

04. ๋ธŒ๋ผ์šฐ์ € ๋กœ๋”ฉ์‹œ๊ฐ„

driver.implicitly_wait(5)

๐Ÿ“ implicitly_wait( ) ์‚ฌ์šฉ์ด์œ 

selenium์€ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์ง์ ‘ ๋„์›Œ ํฌ๋กค๋งํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค. ๋”ฐ๋ผ์„œ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ๋จผ์ € ๋„์šฐ๊ณ  ์™„์ „ํžˆ ๋กœ๋”ฉ์ด ๋‹ค ๋œ ํ›„์—, ์›ํ•˜๋Š” ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค. implicitly_wait( )๋Š” ์›น์ด ์™„์ „ํžˆ ๋กœ๋”ฉ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

๐Ÿ“ implicitly_wait( )์™€ time.sleep( ) ์ฐจ์ด์ 

implicitly_wait(10)

  • 10์ดˆ ๋™์•ˆ ์›น์ด ๋กœ๋”ฉ๋˜๋Š” ๊ฒƒ์„ ๊ธฐ๋‹ค๋ฆฌ๋ฉฐ, ๋งŒ์•ฝ 10์ดˆ ์ „์— ๋กœ๋”ฉ์ด ๋๋‚ด๋ฉด ๋‚จ์€ ์‹œ๊ฐ„์„ ๋ฌด์‹œํ•˜๊ณ  ๋‹ค์Œ ์ฝ”๋“œ ์‹คํ–‰
  • 10์ดˆ ๋™์•ˆ ๋กœ๋”ฉ์ด ์•ˆ ๋๋‚˜๋ฉด ์—๋Ÿฌ ๋ฐœ์ƒ

time.sleep(10)

  • ๋ฌด์กฐ๊ฑด 10์ดˆ๋ฅผ ๊ธฐ๋‹ค๋ฆผ

profile
๊ทค๊ทค ์ฝ”๋”ฉ

0๊ฐœ์˜ ๋Œ“๊ธ€