반응형

BeautifulSoup을 통해 접근한 요소의 부모 요소에 접근을 하려면 어떻게 해야 할까요? 여기서는 특정 요소의 부모 요소에 접근하는 방법을 알아봅니다. 

 

| 부모 요소란?

트리 형식의 데이터에서 특정 요소의 상위에 있는 요소를 의미합니다. 

 

<html>
  <head>
    <title>TEST HTML문서</title>
  </head>
  <body>
    <p>현명한 생쥐 이야기</p>
  </body>
</html>

 

위의 html문서에서 title의 부모요소는 head가 됩니다. 

 

 

| 웹 사이트에서 html문서 받아오기

 

여기서는 다음 금융에서 html 문서를 받아와서 파싱(parsing)을 하겠습니다. 

from bs4 import BeautifulSoup
import requests
from fake_useragent import UserAgent

ua = UserAgent()
header = {'user-agent': ua.chrome}

finance_page = requests.get('https://finance.daum.net/', headers = header)

soup = BeautifulSoup(finance_page.content, 'lxml')

※코드의 자세한 내용을 확인하고 싶은 경우는 아래의 링크를 참고해 주세요. 

웹사이트 html문서 가지고 오기(웹 스크래핑 기초, 금융 분석 자동화)

 

 

| title 태그에 접근하기

 

title = soup.title
print(title)

soup.title을 통해서 간단하게 접근을 할 수 있습니다. print로 출력한 내용은 아래와 같습니다. 

 

<title>Daum 금융  </title>

 

 

| title의 부모 태그에 접근하기

 

title = soup.title
print(title.parent)

이렇게 해서 출력을 해보면 다음 금융의 head태그의 내용이 아래처럼 복잡하게 출력이 됩니다. 중간 부분은 생략했지만 head 태그의 시작과 끝이 포함되어 있는 것을 확인할 수 있습니다. title태그는 그 안에 자식 태그로 포함이 되어 있죠.

 

<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
<meta content="IE=edge" http-equiv="X-UA-Compatible"/>
<meta content="다음금융" property="og:site_name"/>
<meta content="https://t1.daumcdn.net/media/finance_og.png" property="og:image"/>
<link href="//finance.daum.net/favicon.ico" rel="shortcut icon" type="image/x-icon"/>
<title>Daum 금융  </title>
...
...
</head>

 

| 특정 태그(요소)의 이름 출력하기

요소.name의 형식으로 태그의 이름을 얻어올 수도 있습니다. 지금 당장은 꼭 필요하지 않게 느껴질 수도 있지만 거대한 html문서에서 안정적으로 데이터를 얻기 위해서는 데이터를 선택하는 조건에 태그의 이름 등을 활용하는 경우도 있으니 기억해 두는 것을 추천합니다. 

 

title = soup.title
print(title.parent.name)

이름을 출력하면 결과는 아래와 같습니다. 

head

 

 

| html 태그의 부모 요소는 무엇일까?

 

이쯤 되면 BeautifulSoup이 파싱한 html 태그의 부모 요소가 무엇인지 궁금해집니다. html 태그의 부모 요소의 이름을 출력해보겠습니다. 

 

html = soup.html
print(html.parent.name)

출력한 결과는 아래와 같습니다. 

[document]

조금 애매하니 type 역시 출력을 해보겠습니다. 

print(type(html.parent))

출력 결과는 아래처럼 BeautifulSoup 타입의 문서라는 것을 확인할 수 있습니다. 

 

<class 'bs4.BeautifulSoup'>

 

 

| 그렇다면 BeautifulSoup 부모 요소도 있는 건가?

 

직접적으로 파싱한 soup의 부모 요소에 접근을 해보겠습니다. 

 

print(soup.parent)

 

출력 결과는 아래와 같습니다. 역시 파싱한 문서 자체의 부모 요소는 없다는 것을 알 수 있습니다. 

 

None

 

참고 문서

BeautifulSoup Documentation

https://www.crummy.com/software/BeautifulSoup/bs4/doc/index.html?highlight=parent#parent 

 

같이 보면 좋을 문서 모음

웹 스크래핑 |웹 크롤링 코스

 

웹 스크래핑 |웹 크롤링 코스

| 웹 스크래핑 기초 requests로 서버에 요청하기(웹스크래핑) 왜 fake_useragent를 쓰는 거야?(웹 스크래핑) request 할 때 타입아웃 설정하기(웹 스크래핑) Beautifulsoup으로 html 받아오기(Python, 웹스크래핑,.

easytoread.tistory.com

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기