λ°λ³΅μ μΌλ‘ λ°μ΄ν°λ₯Ό μμ§νλ μΉ ν¬λ‘€λ§
λ΄μ€ κΈ°μ¬λ₯Ό μ£ΌκΈ°μ μΌλ‘ λͺ¨λν°λ§νκ±°λ, μ¨λΌμΈ μΌνλͺ°μμ νΉμ μ νμ κ°κ²© λ³λμ μΆμ νλ €λ©΄ μ΄λ»κ² ν΄μΌ ν κΉμ?
μΉ ν¬λ‘€λ§(Web Crawling)
μ μ΄λ¬ν μμ
μ μλννμ¬ λ°λ³΅μ μΌλ‘ λ°μ΄ν°λ₯Ό μμ§ν λ νμ©νλ κΈ°μ μ
λλ€.
μΉ ν¬λ‘€λ§μ μλνλ μ€ν¬λ¦½νΈλ₯Ό ν΅ν΄ μΉνμ΄μ§λ₯Ό λ°©λ¬Ένκ³ , κ·Έ νμ΄μ§μμ νΉμ λ°μ΄ν°λ₯Ό μΆμΆνλ κ³Όμ μ λ§ν©λλ€.
μ°Έκ³ : λ¨μΌ νμ΄μ§μ λ°μ΄ν°λ₯Ό μμ§νλ κ²μ μΉ μ€ν¬λν(Web Scraping)μ΄λΌκ³ ν©λλ€.
μλ°ν λ§νλ©΄ μΉ ν¬λ‘€λ§
μ μ¬λ¬ μΉ μ¬μ΄νΈλ₯Ό νμνκ³ λ°μ΄ν°λ₯Ό 체κ³μ μΌλ‘ μμ§νλ κ³Όμ μ λ»νλ©°, μΉ μ€ν¬λν
μ λ¨μΌ νμ΄μ§μμ νΉμ λ°μ΄ν°λ₯Ό μΆμΆνλ μμ
μ μλ―Έν©λλ€.
λ³Έ μμ
μμ λ€λ£¨λ λ΄μ©μ λ°μ΄ν°λ₯Ό μμ§νλ ν¬κ΄μ μΈ κ³Όμ μ λ€λ£¨κΈ° λλ¬Έμ, μ£Όλ‘ μΉ ν¬λ‘€λ§
μ΄λΌλ μ©μ΄λ₯Ό μ¬μ©νκ² μ΅λλ€.
μΉ ν¬λ‘€λ§μ μ΄λ»κ² λμν κΉμ?
μΉ ν¬λ‘€λ§μ μΉ ν¬λ‘€λ¬(Crawler)
λλ μ€νμ΄λ(Spider)
λΌκ³ λΆλ¦¬λ νλ‘κ·Έλ¨μΌλ‘ μΉμ¬μ΄νΈλ₯Ό λ°©λ¬Ένκ³ , μΉ νμ΄μ§μ λ΄μ©μ μλμΌλ‘ μμ§νλ κ³Όμ μ λ»ν©λλ€.
μΉ ν¬λ‘€λ¬λ λ€μκ³Ό κ°μ κ³Όμ μ κ±°μ³ λμν©λλ€.
-
μΉ νμ΄μ§ μμ² : ν¬λ‘€λ¬λ μΉ νμ΄μ§μ URLμ μμ²νμ¬ ν΄λΉ νμ΄μ§μ HTML μμ€λ₯Ό κ°μ Έμ΅λλ€.
-
HTML νμ± : νμ±(Parsing)μ HTML μμ€λ₯Ό λΆμνμ¬ μΉ νμ΄μ§μ ꡬ쑰λ₯Ό μ΄ν΄νλ κ³Όμ μ λ§ν©λλ€. ν¬λ‘€λ¬λ HTML νκ·Έλ₯Ό λΆμνκ³ , μΉ νμ΄μ§μ λ΄μ©μ μΆμΆν©λλ€.
-
λ°μ΄ν° μΆμΆ : ν¬λ‘€λ¬λ μΉ νμ΄μ§μμ νμν λ°μ΄ν°λ₯Ό μΆμΆνκ³ , μ΄λ₯Ό μ μ₯νκ±°λ κ°κ³΅νμ¬ μ¬μ©μμκ² μ 곡ν©λλ€.
μΉ ν¬λ‘€λ¬λ λ³΄ν΅ ν νμ΄μ§μμ μμνμ¬ κ·Έ νμ΄μ§μ ν¬ν¨λ λ§ν¬λ€μ λ°λΌκ°λ©° λ€λ₯Έ νμ΄μ§λ€μ μμ°¨μ μΌλ‘ λ°©λ¬Έν©λλ€.
μ΄ κ³Όμ μμ ν¬λ‘€λ¬λ HTML μ½ν μΈ λ₯Ό λ€μ΄λ‘λνμ¬ μ μ₯νκ±°λ μΈλ±μ±(Indexing, μμΈν)ν©λλ€.
ν¬λ‘€λ§μ κ²°κ³Όλ¬Όμ μ£Όλ‘ μΉμ¬μ΄νΈμ ꡬ쑰μ λ΄μ©μ λ°μν λ°μ΄ν°λ² μ΄μ€λ νμΌ ννλ‘ μ μ₯λ©λλ€.
κ°λ¨ν μΉ ν¬λ‘€λ§ μ½λ μμ
μ΄μ κ°λ¨ν μΉ ν¬λ‘€λ§ μ½λλ₯Ό ν΅ν΄ μ€μ λ‘ λ°μ΄ν°λ₯Ό μμ§ν΄λ³΄κ² μ΅λλ€.
νμ΄μ¬μμλ requests
μ BeautifulSoup
λΌμ΄λΈλ¬λ¦¬λ₯Ό μ£Όλ‘ μ¬μ©νμ¬ μΉ νμ΄μ§μ λ°μ΄ν°λ₯Ό κ°μ Έμ¬ μ μμ΅λλ€.
μ°Έκ³ : μ€μ΅ μ½λλ₯Ό μ»΄ν¨ν°μμ μ€μ λ‘ μ€ννλ €λ©΄,
pip install requests beautifulsoup4
λͺ λ Ήμ΄λ‘ 'requests'μ 'BeautifulSoup' λΌμ΄λΈλ¬λ¦¬λ₯Ό μ€μΉν΄μΌ ν©λλ€.
import requests from bs4 import BeautifulSoup # 1. example.com μΉ νμ΄μ§μ HTML μμ€ κ°μ Έμ€κΈ° url = 'https://example.com' response = requests.get(url) # 2. HTML νμ±νκΈ° soup = BeautifulSoup(response.text, 'html.parser') # 3. μΉμ¬μ΄νΈ λ΄ λ¨λ½(p) νκ·Έ μΆμΆνκΈ° titles = soup.find_all('p') # 4. λ¨λ½(p) νκ·Έμ ν μ€νΈ μΆλ ₯νκΈ° for title in titles: print(title.text)
-
1λ¨κ³ :
requests.get(url)
μ μ¬μ©νμ¬ μ§μ λ URLμ μΉ νμ΄μ§λ₯Ό μμ²νκ³ , ν΄λΉ νμ΄μ§μ HTML μμ€λ₯Ό κ°μ Έμ΅λλ€. -
2λ¨κ³ :
BeautifulSoup
κ°μ²΄λ₯Ό ν΅ν΄ HTMLμ νμ±νκ³ , μ΄λ₯Ό νμν μ μλ κ΅¬μ‘°λ‘ λ§λλλ€. -
3λ¨κ³ :
soup.find_all('p')
λ₯Ό μ¬μ©ν΄ μΉμ¬μ΄νΈ λ΄ λͺ¨λ λ¨λ½(<p>
νκ·Έ)μ μΆμΆνκ³ , μ΄λ₯Ό μΆλ ₯ν©λλ€.
μ μ½λ μμλ 'example.com' μΉ νμ΄μ§μμ λͺ¨λ λ¨λ½(<p>
νκ·Έ) ν
μ€νΈλ₯Ό μΆμΆνλ κ°λ¨ν μΉ ν¬λ‘€λ§ μμ
(μλ°ν λ§νλ©΄ μΉ μ€ν¬λν)μ μνν©λλ€.
μ€μ λ‘ λ΄μ€ νλ«νΌμμ λ΄μ€ κΈ°μ¬μ μ λͺ©μ μΆμΆνκ±°λ, μ¨λΌμΈ μΌνλͺ°μμ νΉμ μ νμ κ°κ²©μ μΆμΆνλ λ±μ μΉ ν¬λ‘€λ§μ ν λμλ ν¨μ¬ λ 볡μ‘ν μ½λκ° νμν©λλ€.
μ΄λ² μμ μμλ μΉ ν¬λ‘€λ§μ κΈ°λ³Έ κ°λ κ³Ό νμμ±μ μ΄ν΄νκ³ , κ°λ¨ν ν¬λ‘€λ§ μ½λλ₯Ό μμ±ν΄λ³΄μμ΅λλ€.
λ€μ μμ μμλ μΉ ν¬λ‘€λ§ μ κ³ λ €ν΄μΌ ν λ²μ , μ€λ¦¬μ μ¬νμ λν΄ μμλ³΄κ² μ΅λλ€.
μλ λΉμΉΈμ λ€μ΄κ° κ°μ₯ μ μ ν λ¨μ΄λ 무μμΌκΉμ?
Guidelines
AI Tutor
Publish
Design
Upload
Notes
Favorites
Help
Code Editor
Execution Result