Guidelines

BeautifulSoup을 μ΄μš©ν•œ HTML νŒŒμ‹±

μ›Ή 크둀링으둜 μ›ν•˜λŠ” 정보λ₯Ό μ–»κΈ° μœ„ν•΄μ„œλŠ”, μˆ˜μ§‘ν•œ HTML λ°μ΄ν„°μ—μ„œ μ›ν•˜λŠ” 정보λ₯Ό μΆ”μΆœν•΄μ•Ό ν•©λ‹ˆλ‹€.

BeautifulSoup은 μ΄λŸ¬ν•œ μž‘μ—…μ„ μ‰½κ²Œ ν•΄κ²°ν•  수 μžˆλ„λ‘ λ•λŠ” 파이썬 νŒ¨ν‚€μ§€λ‘œ, requests둜 κ°€μ Έμ˜¨ HTML 데이터λ₯Ό νŒŒμ‹±(Parsing, ꡬ문 뢄석을 ν†΅ν•œ 데이터 μΆ”μΆœ)ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€.


HTML 데이터λ₯Ό νŒŒμ‹±ν•˜κ³  ν•„μš”ν•œ 정보 μΆ”μΆœν•˜κΈ°

BeautifulSoup을 μ‚¬μš©ν•˜λ©΄ HTML λ¬Έμ„œλ₯Ό 파이썬 객체둜 λ³€ν™˜ν•˜μ—¬, λ¬Έμ„œμ˜ 각 μš”μ†Œλ₯Ό 파이썬 μ½”λ“œλ‘œ κ°„νŽΈν•˜κ²Œ νƒμƒ‰ν•˜κ³  μ‘°μž‘ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ§€κΈˆλΆ€ν„° BeautifulSoup을 μ‚¬μš©ν•΄ HTML 데이터λ₯Ό νŒŒμ‹±ν•˜κ³ , ν•„μš”ν•œ 정보λ₯Ό μΆ”μΆœν•˜λŠ” 방법을 μ‚΄νŽ΄λ³΄κ² μŠ΅λ‹ˆλ‹€.


BeautifulSoup으둜 HTML νŒŒμ‹±ν•˜κΈ°

λ¨Όμ €, μ›Ή νŽ˜μ΄μ§€μ—μ„œ κ°€μ Έμ˜¨ HTML 데이터λ₯Ό BeautifulSoup 객체둜 λ³€ν™˜ν•΄μ•Ό ν•©λ‹ˆλ‹€.

μ•„λž˜μ™€ 같이 requests νŒ¨ν‚€μ§€λ₯Ό μ‚¬μš©ν•΄ HTML 데이터λ₯Ό κ°€μ Έμ˜¨ ν›„, BeautifulSoup 객체λ₯Ό μƒμ„±ν•˜μ—¬ HTML을 νŒŒμ‹±ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

BeautifulSoup을 μ‚¬μš©ν•œ HTML νŒŒμ‹±
import requests from bs4 import BeautifulSoup # μš”μ²­ν•  URL url = 'https://www.codefriends.net' # GET μš”μ²­μœΌλ‘œ HTML 데이터 κ°€μ Έμ˜€κΈ° response = requests.get(url) # BeautifulSoup 객체 생성 및 HTML νŒŒμ‹± soup = BeautifulSoup(response.text, 'html.parser') # HTML의 제λͺ©(tag) μΆ”μΆœν•˜κΈ° title = soup.title.text # νŽ˜μ΄μ§€ 제λͺ© 좜λ ₯ print(f"Page Title: {title}")

μœ„ μ½”λ“œλŠ” soup λ³€μˆ˜μ— HTML 데이터λ₯Ό νŒŒμ‹±ν•œ BeautifulSoup 객체λ₯Ό μ €μž₯ν•˜κ³ , soup.title.textλ₯Ό 톡해 HTML λ¬Έμ„œμ˜ 제λͺ©μ„ μΆ”μΆœν•©λ‹ˆλ‹€.

soup.title μ½”λ“œλŠ” HTML λ¬Έμ„œμ˜ <title> νƒœκ·Έ λ‚΄μš©μ„ κ°€μ Έμ˜€λ©°, .textλŠ” ν•΄λ‹Ή νƒœκ·Έμ˜ ν…μŠ€νŠΈλ₯Ό μΆ”μΆœν•©λ‹ˆλ‹€.


ν•„μš”ν•œ 정보 μΆ”μΆœν•˜κΈ°

정보λ₯Ό μΆ”μΆœν•  λ•ŒλŠ” μ•„λž˜μ™€ 같이 λ‹€μ–‘ν•œ 방법을 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

  1. νƒœκ·Έ μ΄λ¦„μœΌλ‘œ μš”μ†Œ μ°ΎκΈ°: HTML λ¬Έμ„œμ—μ„œ νŠΉμ • νƒœκ·Έλ₯Ό μ°ΎμŠ΅λ‹ˆλ‹€.
νƒœκ·Έ μ΄λ¦„μœΌλ‘œ μš”μ†Œ μ°ΎκΈ°
# λͺ¨λ“  <a> νƒœκ·Έ μ°ΎκΈ° links = soup.find_all('a') # λͺ¨λ“  링크 좜λ ₯ for link in links: print(link.get('href'))

  1. 클래슀 μ΄λ¦„μœΌλ‘œ μš”μ†Œ μ°ΎκΈ°: νŠΉμ • 클래슀 이름을 가진 μš”μ†Œλ₯Ό 찾을 수 μžˆμŠ΅λ‹ˆλ‹€.
클래슀 μ΄λ¦„μœΌλ‘œ μš”μ†Œ μ°ΎκΈ°
# class="example"인 λͺ¨λ“  <div> νƒœκ·Έ μ°ΎκΈ° divs = soup.find_all('div', class_='example') # λͺ¨λ“  <div> νƒœκ·Έμ˜ ν…μŠ€νŠΈ 좜λ ₯ for div in divs: print(div.text)

  1. ID둜 μš”μ†Œ μ°ΎκΈ°: νŠΉμ • IDλ₯Ό 가진 μš”μ†Œλ₯Ό 찾을 수 μžˆμŠ΅λ‹ˆλ‹€.
ID둜 μš”μ†Œ μ°ΎκΈ°
# id="main-content"인 μš”μ†Œ μ°ΎκΈ° main_content = soup.find(id='main-content') # μ„ νƒλœ μš”μ†Œμ˜ ν…μŠ€νŠΈ 좜λ ₯ print(main_content.text)

μ›Ή νŽ˜μ΄μ§€μ—μ„œ 기사 제λͺ©κ³Ό 링크 μΆ”μΆœν•˜κΈ°

μ•„λž˜λŠ” μ‹€μ œ μ›Ή νŽ˜μ΄μ§€μ—μ„œ 기사 제λͺ©κ³Ό 링크λ₯Ό μΆ”μΆœν•˜λŠ” μ˜ˆμ‹œμž…λ‹ˆλ‹€:

기사 제λͺ©κ³Ό 링크 μΆ”μΆœν•˜κΈ°
import requests from bs4 import BeautifulSoup # μΆ”μΆœν•  μ›Ή νŽ˜μ΄μ§€ URL url = 'https://news.ycombinator.com/' # GET μš”μ²­μœΌλ‘œ HTML 데이터 κ°€μ Έμ˜€κΈ° response = requests.get(url) # BeautifulSoup 객체 생성 및 HTML νŒŒμ‹± soup = BeautifulSoup(response.text, 'html.parser') # λͺ¨λ“  기사 제λͺ©κ³Ό 링크 μΆ”μΆœ articles = soup.find_all('a') # 기사 제λͺ©κ³Ό 링크 좜λ ₯ for article in articles: # 기사 제λͺ©κ³Ό 링크 μΆ”μΆœ title = article.text # 링크 URL link = article.get('href') # 제λͺ©κ³Ό 링크 좜λ ₯ print(f"Title: {title}, Link: {link}")

μœ„ μ½”λ“œλŠ” YCombinator λ‰΄μŠ€ νŽ˜μ΄μ§€μ—μ„œ a νƒœκ·Έλ₯Ό μ°Ύμ•„ 기사 제λͺ©κ³Ό 링크λ₯Ό μΆ”μΆœν•©λ‹ˆλ‹€.

이처럼 BeautifulSoup을 μ‚¬μš©ν•˜λ©΄ μ›Ή νŽ˜μ΄μ§€μ˜ ꡬ쑰λ₯Ό 뢄석해 μ›ν•˜λŠ” 데이터λ₯Ό μ‰½κ²Œ μΆ”μΆœν•  수 μžˆμŠ΅λ‹ˆλ‹€.

Mission
0 / 1

μ•„λž˜ λΉˆμΉΈμ— λ“€μ–΄κ°ˆ κ°€μž₯ μ μ ˆν•œ λ©”μ„œλ“œλŠ” λ¬΄μ—‡μΌκΉŒμš”?

BeautifulSoup νŒ¨ν‚€μ§€λ‘œ HTML 데이터λ₯Ό νŒŒμ‹±ν•˜κ³  ν•„μš”ν•œ 정보λ₯Ό μΆ”μΆœν•  λ•Œ, HTML λ¬Έμ„œμ˜ 제λͺ©μ„ μΆ”μΆœν•˜λŠ” λ©”μ„œλ“œλŠ” μž…λ‹ˆλ‹€.
soup.title.text
soup.find_all('title')
soup.get_title()
soup.find('head').title

Guidelines

AI Tutor

Publish

Design

Upload

Notes

Favorites

Help

Code Editor

Run
Generate

Execution Result