1. 텍스트 추출 메서드 소개
오늘은 HTML 요소에서 소중한 텍스트 데이터와 속성을 추출하는 법을 배워볼 거야. 마체테는 버리고,
BeautifulSoup
으로 코드 작업을 한다면 가을 정원을 걷는 것처럼 쉽고 즐거울 거야. 준비됐어? 그러면 시작하자!
HTML 요소에서 텍스트를 추출하는 메서드가 우리 리스트의 첫 번째 항목이야. 텍스트를 추출하기 전에 페이지를 로드해보자.
import requests
from bs4 import BeautifulSoup
# 페이지의 HTML 코드를 로드합니다
url = 'https://example.com'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
이제 우리는 HTML 문서의 트리 구조를 담고 있는 soup
객체를 갖게 되었어. 이제 어떤 태그 요소에서 텍스트를 추출해보자, 예를 들어 제목 같은 것.
.text
와 get_text()
메서드
.text
속성과 그와 유사한 get_text()
메서드는 요소(및 모든 하위 요소)의 텍스트 내용을 얻을 수 있게 해줘.
# 첫 번째로 발견되는 h1 제목에서 텍스트 추출
h1_tag = soup.find('h1')
print(h1_tag.text) # 또는 h1_tag.get_text()
직접 시도해봐: 이전 강의에서 배운 검색 메서드를 사용하여 다른 요소를 찾아서 텍스트를 추출해봐. 얼마나 많은 정보를 얻을 수 있는지 보고 놀랄 거야!
2. 속성 값 추출
텍스트는 텍스트지만, 때로는 중요한 데이터가 속성에 숨겨져 있을 수 있어. 예를 들어, 링크 주소를 알아내거나 이미지의 URL을 가져와야 할 때가 있을 거야.
속성 값 추출
예를 들어, <a
href="https://example.com">Example</a>
요소가 있다고 가정해보자. href
값을 어떻게 얻을까? 아주 간단해.
# 링크 추출
a_tag = soup.find('a')
link = a_tag['href']
print("링크:", link)
이 코드는 href
속성 값을 추출했어. 다른 유용한 속성들도 비슷한 방식으로 추출할 수 있어.
이미지 URL 가져오기
이미지 URL을 가져오는 일도 이와 같이 쉬워. 예를 들어,
<img src="image.jpg" alt="고양이">
를 보자.
# 이미지 URL 추출
img_tag = soup.find('img')
image_url = img_tag['src']
print("이미지 URL:", image_url)
BeautifulSoup
의 아름다움은 HTML 구조가 어떻게 작동하는지 깊이 생각할 필요 없이 데이터를 쉽게 찾아내고 추출할 수 있다는 점이야.
3. 텍스트와 속성 추출 예제
이제 예제를 살펴볼 시간이야. 좀 더 복잡한 문제를 다뤄보자; 예를 들면, 페이지의 모든 링크를 태그 <a>
안의 텍스트와 함께 추출해보는 거야.
예제: 텍스트와 함께 모든 링크 추출
# 모든 a 태그 찾기
a_tags = soup.find_all('a')
# 링크와 텍스트 출력
for a_tag in a_tags:
link = a_tag['href']
text = a_tag.get_text()
print(f"텍스트: {text}, 링크: {link}")
find_all
메서드는 검색 조건을 만족하는 모든 요소를 찾아내는데 아주 유용해, 그리고 for
루프는 각각의 요소를 순회할 수 있게 해줘.
4. 오류 처리하기
오류를 처리하는 것을 잊지 말자. 때로는 HTML 구조가 예상과 다를 수 있거나, 요소가 예상했던 속성을 갖고 있지 않을 수 있어. 이런 상황들에서 코드가 중단되지 않도록 처리해야 해.
# 속성 추출 시 오류 처리 예제
try:
link = a_tag['href']
except KeyError:
link = None
print("속성 href를 찾을 수 없습니다!")
이렇게 하면 스크립트를 더 안정적으로 만들 수 있고, 작은 오류 하나 때문에 코드가 멈추는 일을 방지할 수 있어.
5. 실제 응용
2019년에 한 러시아 기업가는 자신의 회사가 데이터 스크래핑을 전문으로 하여 연간 2,000만 루블의 매출을 달성한 이야기를 공유했어. 그는 자동화된 정보 수집이 경쟁을 제한하지 않고, 오히려 시장에 적응할 수 있도록 돕는다는 점을 강조했어.
예를 들어, 한 고객은 공급업체 사이트에서 상품 재고를 매일 수집하는 파서를 주문했는데, 이를 통해 자신의 온라인 스토어에서 제품과 가격을 신속하게 업데이트할 수 있었어. 기업가는 또한 일부 웹사이트가 스크래핑을 어렵게 만들려고 시도함에도 불구하고, 현대 기술은 그러한 장애물을 효과적으로 우회하며, 기업들이 전략적 결정을 내리는 데 필요한 데이터에 접근할 수 있도록 한다고 강조했어.
GO TO FULL VERSION