BeautifulSoup μΉ ν¬λ‘€λ§μ νκ³
requests
μ BeautifulSoup
λΌμ΄λΈλ¬λ¦¬λ λ³νμ§ μλ μΉμ¬μ΄νΈ, μ¦ μ μ μΈ λ°μ΄ν°λ₯Ό ν¬λ‘€λ§νλ λ°μ μ¬μ©λ©λλ€.
νμ§λ§ μ΅μ μΉμ¬μ΄νΈλ€μ μ¬μ©μμμ μνΈμμ©μ λ°λΌ λ°μ΄ν°λ₯Ό λμ μΌλ‘ μ²λ¦¬ν©λλ€. μ¬μ©μλ μλ²μ μΆκ°μ μΈ λ°μ΄ν°λ₯Ό μμ²νκ³ , μλ²λ‘λΆν° λ°μ μλ΅κ°μ μΉ λΈλΌμ°μ μ JavaScriptκ° μ²λ¦¬νμ¬ νλ©΄μ μ΄λ₯Ό νμν©λλ€.
requests
λΌμ΄λΈλ¬λ¦¬λ μ μ HTMLλ§μ κ°μ Έμ¬ μ μκ³ , BeautifulSoup
μ κ°μ Έμ¨ HTMLμ νμ±νλ λ°μ μ¬μ©λ©λλ€.
JavaScriptκ° μμ±νκ±°λ λ³κ²½νλ λ°μ΄ν°λ requests
λ‘ κ°μ Έμ¬ μ μλ HTMLμ ν¬ν¨λμ΄ μμ§ μκΈ° λλ¬Έμ, κΈ°μ‘΄ λ°©μμΌλ‘λ JavaScriptλ‘ μ²λ¦¬ν λ°μ΄ν°λ₯Ό ν¬λ‘€λ§ν μ μμ΅λλ€.
λμ λ°μ΄ν°λ₯Ό ν¬λ‘€λ§νλ λ°©λ²?
νμ§λ§ Selenium
λ₯Ό μ¬μ©νλ©΄ μ€μ λ‘ μΉ λΈλΌμ°μ λ₯Ό μ€νμν€κ³ , JavaScriptκ° μ€νλ νμ DOMμ ν¬λ‘€λ§ν μ μμ΅λλ€.
κΈ°μμ² ννμ΄μ§λ 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λ‘ λμ μΌλ‘ μμ±λ μ½ν μΈ λ₯Ό ν¬λ‘€λ§ν μ μμ΅λλ€.
Selenium λΌμ΄λΈλ¬λ¦¬μ λν λ μμΈν λ΄μ©μ νμ΄μ¬κ³Ό AIλ‘ λλ΄λ μ 무 μλν 컀리νλΌμμ λ°°μ°μ€ μ μμ΅λλ€!
Guidelines
AI Tutor
Publish
Design
Upload
Notes
Favorites
Help
Code Editor
Execution Result