JavaScriptμ λμ μΉ ν¬λ‘€λ§
μΉ νμ΄μ§λ HTML
, CSS
, JavScript
μ΄ 3κ°μ§κ° κ²°ν©λμ΄ λ§λ€μ΄μ§λλ€.
HTML
μ μΉ νμ΄μ§μ ꡬ쑰λ₯Ό μ μνκ³ , CSS
λ μΉ νμ΄μ§μ μ€νμΌμ μ μν©λλ€.
JavaScript
λ μΈμ΄λ μΉ νμ΄μ§λ₯Ό λμ (Dynamic)μΌλ‘ λ§λλλ€.
μ¬κΈ°μ λμ μ΄λΌλ λ¨μ΄μ μλ―Έλ μ¬μ©μμ μνΈμμ©νκ±°λ, νΉμ μ΄λ²€νΈμ λ°μνμ¬ μΉ νμ΄μ§μ μ½ν μΈ κ° λ°λλ κ²μ μλ―Έν©λλ€.
μλ₯Ό λ€μ΄ JavaScriptλ₯Ό νμ©νλ©΄ μ¬μ©μκ° λ²νΌμ ν΄λ¦νμ λ μλ‘μ΄ λ΄μ©μ νμνκ±°λ, μ¬μ©μμ μ€ν¬λ‘€μ λ°λΌ μΆκ°μ μΈ μ½ν μΈ λ₯Ό λΆλ¬μ¬ μ μμ΅λλ€.
μ΄λ¬ν λμ μ½ν μΈ λ μΉ νμ΄μ§λ₯Ό μ²μ λΆλ¬μ¬ λλ μ‘΄μ¬νμ§ μλ€κ°, μΉ λΈλΌμ°μ μμ JavaScriptλ₯Ό μ€ννλ©΄μ λμ μΌλ‘ μμ±λ©λλ€.
BeautifulSoupμ νκ³
BeautifulSoupμ HTML
μ λΆμν΄ λ°μ΄ν°λ₯Ό κ°μ Έμ΅λλ€.
νμ§λ§ JavaScript
λ₯Ό νμ©ν΄ λμ μΌλ‘ μμ±λ μ½ν
μΈ λ BeautifulSoupμΌλ‘ κ°μ Έμ¬ μ μμ΅λλ€.
BeautifulSoupμΌλ‘ ν¬λ‘€λ§μ΄ λΆκ°ν μ½λ μμ
λ¨Όμ BeautifulSoupμ μ¬μ©ν΄ κΈ°μμ² ννμ΄μ§μμ νμ¬ κΈ°μ¨κ³Ό μ²΄κ° μ¨λλ₯Ό κ°μ Έμ€λ μ½λλ₯Ό μ΄ν΄λ³΄κ² μ΅λλ€.
import requests from bs4 import BeautifulSoup # κΈ°μμ² ννμ΄μ§ URL url = 'https://www.weather.go.kr/w/index.do' # νμ΄μ§ μμ² response = requests.get(url) # BeautifulSoupμΌλ‘ HTML νμ± soup = BeautifulSoup(response.text, 'html.parser') # κΈ°μ¨κ³Ό 체κ°μ¨λ μ°ΎκΈ° # 'tmp' ν΄λμ€λ νμ¬ κΈ°μ¨μ λνλ΄κ³ , 'chill' ν΄λμ€λ 체κ°μ¨λλ₯Ό λνλ temperature_element = soup.find('span', class_='tmp') feels_like_element = soup.find('span', class_='chill') # ν μ€νΈ μΆμΆ temperature = temperature_element.text.strip() if temperature_element else 'N/A' feels_like = feels_like_element.text.strip() if feels_like_element else 'N/A' # κ²°κ³Ό μΆλ ₯ print(f"μ€λμ κΈ°μ¨: {temperature}") print(f"체κ°μ¨λ: {feels_like}")
μ μ½λλ BeautifulSoupμΌλ‘ κΈ°μμ² ννμ΄μ§μ λ μ¨ μ 보λ₯Ό κ°μ Έμ€λ €κ³ μλνμ§λ§, temperature_element
μ feels_like_element
κ° None
μ λ°νν©λλ€.
μ΄λ JavaScriptκ° μ€νλκΈ° μ μ HTMLλ§ κ°μ Έμ€κΈ° λλ¬Έμ ν΄λΉ μμλ₯Ό μ°Ύμ μ μκΈ° λλ¬Έμ λλ€.
Seleniumμ νμ©ν λμ μΉ ν¬λ‘€λ§
κΈ°μμ² ννμ΄μ§λ JavaScriptλ₯Ό νμ©ν΄ λμ μΌλ‘ λ μ¨ μ 보λ₯Ό νμνκΈ° λλ¬Έμ BeautifulSoupμΌλ‘λ λ°μ΄ν°λ₯Ό μ λλ‘ κ°μ Έμ¬ μ μμ΅λλ€.
νμ§λ§ Selenium(μ
λ λμ)
μ μ¬μ©νλ©΄ μ€μ λΈλΌμ°μ μμ JavaScriptκ° μ€νλ νμ νλ©΄μ κ°μ Έμ, μ΄λ¬ν λ¬Έμ λ₯Ό ν΄κ²°ν μ μμ΅λλ€.
μ°Έκ³ : μ€μ΅ μ½λλ₯Ό μ»΄ν¨ν°μμ μ€μ λ‘ μ€ννλ €λ©΄,
pip install selenium
λͺ λ Ήμ΄λ‘ Selenium λΌμ΄λΈλ¬λ¦¬λ₯Ό μ€μΉν΄μΌ ν©λλ€.
from selenium import webdriver from selenium.webdriver.common.by import By # Chrome λΈλΌμ°μ μ΄κΈ° driver = webdriver.Chrome() # κΈ°μμ² λλ€ μ보 νμ΄μ§ μ΄κΈ° url = "https://www.weather.go.kr/w/index.do" driver.get(url) # κΈ°μ¨κ³Ό 체κ°μ¨λ μ°ΎκΈ° # 'tmp' ν΄λμ€λ νμ¬ κΈ°μ¨μ λνλ΄κ³ , 'chill' ν΄λμ€λ 체κ°μ¨λλ₯Ό λνλ temperature_element = driver.find_element(By.CLASS_NAME, 'tmp') feels_like_element = driver.find_element(By.CLASS_NAME, 'chill') # ν μ€νΈ μΆμΆ temperature = temperature_element.text feels_like = feels_like_element.text # κ²°κ³Ό μΆλ ₯ print(f"μ€λμ κΈ°μ¨: {temperature}") print(f"체κ°μ¨λ: {feels_like}") # WebDriver μ’ λ£ driver.quit()
μ½λ μμΈ μ€λͺ
-
driver = webdriver.Chrome()
: Chrome λΈλΌμ°μ λ₯Ό μ΄κ³ , driver κ°μ²΄ μμ± -
driver.get(url)
: μ§μ ν URL(κΈ°μμ² ννμ΄μ§)λ‘ μ΄λ -
temperature_element = driver.find_element(By.CLASS_NAME, 'tmp')
: tmp ν΄λμ€λ₯Ό κ°μ§ μμλ₯Ό μ°Ύμ temperature_elementμ μ μ₯ -
feels_like_element = driver.find_element(By.CLASS_NAME, 'chill')
: chill ν΄λμ€λ₯Ό κ°μ§ μμλ₯Ό μ°Ύμ feels_like_elementμ μ μ₯ -
temperature = temperature_element.text
: temperature_elementμ ν μ€νΈλ₯Ό μΆμΆνμ¬ temperatureμ μ μ₯ -
feels_like = feels_like_element.text
: feels_like_elementμ ν μ€νΈλ₯Ό μΆμΆνμ¬ feels_likeμ μ μ₯ -
driver.quit()
: WebDriver μ’ λ£
μ€λμ κΈ°μ¨: 30.4β 체κ°μ¨λ: 체κ°(30.6β)
μ΄λ κ² Seleniumμ μ¬μ©νλ©΄ JavaScriptλ‘ λμ μΌλ‘ μμ±λ μ½ν μΈ λ₯Ό ν¬λ‘€λ§ν μ μμ΅λλ€.
λ€μ μ€ JavaScriptλ‘ λμ μΌλ‘ μμ±λ μΉ μ½ν μΈ λ₯Ό ν¬λ‘€λ§ν λ μ¬μ©ν μ μλ λꡬλ 무μμΌκΉμ?
BeautifulSoup
requests
Selenium
pandas
Guidelines
AI Tutor
Publish
Design
Upload
Notes
Favorites
Help
Code Editor
Execution Result