Akashic Records

자주 사용하는 BeautifulSoup 코드 스니펫 본문

Web Crawling for Beginners

자주 사용하는 BeautifulSoup 코드 스니펫

Andrew's Akashic Records 2024. 4. 23. 19:04
728x90

위는 파이썬 웹 크롤러 프로그램의 개념적 다이어그램을 나타낸 이미지입니다. 이 이미지는 컴퓨터 화면에 코드가 표시되고, 웹 서버와의 데이터 요청 및 응답을 상징하는 화살표가 흐름을 보여주는 모습을 단순하고 교육적인 스타일로 표현하고 있습니다. 컴퓨터는 'Web Crawler'로, 웹 서버는 'Website'로 레이블이 붙어 있습니다.

 

BeautifulSoup은 웹 크롤링 및 스크레이핑에서 매우 자주 사용되는 라이브러리로, HTML과 XML 문서에서 데이터를 추출하는 데 유용합니다. 여기 몇 가지 자주 사용하는 BeautifulSoup 코드 스니펫을 소개하고, 각각의 사용 방법을 설명하겠습니다.

 

1. 기본 설정 및 HTML 페이지 가져오기

웹 페이지에서 HTML을 가져오기 위해 requests 라이브러리와 BeautifulSoup을 사용합니다. 이는 크롤링 작업의 첫 단계입니다.

import requests
from bs4 import BeautifulSoup

url = "https://example.com"
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
  • requests.get(url): 웹 페이지의 HTML을 가져옵니다.
  • BeautifulSoup(response.text, 'html.parser'): 가져온 HTML 텍스트를 파싱하여 BeautifulSoup 객체를 생성합니다.

2. 특정 태그 찾기

웹 페이지에서 <title> 태그를 찾아 페이지 제목을 출력하는 코드입니다.

title = soup.find('title')
print(title.text)
  • find('title'): HTML에서 <title> 태그를 찾습니다.
  • title.text: <title> 태그의 텍스트 콘텐츠를 가져옵니다.

3. 클래스로 요소 찾기

특정 클래스를 가진 모든 <div> 태그를 찾아 그 내용을 출력합니다.

divs = soup.find_all('div', class_='example-class')
for div in divs:
    print(div.text)
  • find_all('div', class_='example-class'): 클래스가 example-class인 모든 <div> 태그를 찾습니다.

4. ID로 요소 찾기

ID가 특정 값인 요소를 찾아 그 내용을 출력합니다.

element = soup.find(id='unique-id')
print(element.text)
  • find(id='unique-id'): ID가 unique-id인 요소를 찾습니다.

5. CSS 선택자 사용

CSS 선택자를 사용하여 요소를 찾고 그 내용을 출력합니다. 이는 클래스, ID, 속성 등 다양한 조건을 조합할 수 있습니다.

items = soup.select('div.container > ul.list > li.item')
for item in items:
    print(item.text)
  • select('div.container > ul.list > li.item'): CSS 선택자를 사용하여 특정 경로에 위치한 모든 <li> 요소를 찾습니다.

6. 링크의 URL과 텍스트 추출

모든 <a> 태그를 찾아 링크의 HREF 속성과 텍스트를 출력합니다.

links = soup.find_all('a')
for link in links:
    print(f"Text: {link.text}, URL: {link.get('href')}")
  • find_all('a'): 모든 <a> 태그를 찾습니다.
  • link.get('href'): <a> 태그의 href 속성값을 가져옵니다.

이 코드들은 BeautifulSoup을 사용하여 웹 페이지에서 다양한 정보를 추출하는 기본적인 방법들을 보여줍니다. 웹 크롤링 작업을 진행할 때, 페이지의 구조와 필요한 데이터에 따라 이 코드들을 조합하거나 수정하여 사용할 수 있습니다.

728x90
Comments