• 카테고리

    질문 & 답변
  • 세부 분야

    데이터 엔지니어링

  • 해결 여부

    미해결

속성 값 출력 질문

20.02.02 23:05 작성 조회수 80

0

크롤링 1탄부터 시작해서 2탄까지 유익한 강의 잘 듣고 있습니다. 감사합니다.

강의에서 배운 내용을 토대로 여러가지 연습을 해보다가 궁금한 점이 생겨 질문합니다.  html코드에서 각 태그는 여러가지 클래스같은 속성들 (id, name 등)이 있는데 지금까지는 해당 태그 안에 있는 TEXT값을 추출하는 함수로 get_text(를 사용했는데, 혹시 이 속성의 값을 출력하려면 어떻게 해야하는지 궁금합니다.

예를들어 <li id="sp_nws162"> 해당 코드에서 id 값인 sp_nws162를 추출하는 방법이 궁금합니다

답변 1

답변을 작성해보세요.

0

안녕하세요. 우선 이렇게 강의도 많이 들어주시고, 칭찬해주셔서 감사합니다.

특정 태그의 속성값은 다음과 같이 태그데이터변수['속성이름'] 를 통해 쉽게 추출할 수 있습니다.

예를 들어 다음 코드를 그대로 실행해보시면, 다음과 같이 출력이 됩니다.

-------------------
[1]크롤링이란? title 웹페이지에서 필요한 데이터를 추출하는 것 ['cssstyle'] 파이썬을 중심으로 다양한 웹크롤링 기술 발달 center

-------------------

예를 들어 h1태그의 id값은 다음 코드에서는 title_data['id']
h2태그의 class값은 다음 코드에서는 title_data['class']
h3태그의 align값은 다음 코드에서는 title_data['align']

으로 가볍게 추출할 수 있습니다. 다음 코드를 실행해보시면 보다 선명하게 이해하실 수 있으실 것 같습니다.

감사합니다.

코드 -----------------------------------

from bs4 import BeautifulSoup
html = "<html> \
            <body> \
                <h1 id='title'>[1]크롤링이란?</h1> \
                <h2 class='cssstyle'>웹페이지에서 필요한 데이터를 추출하는 것</h2> \
                <h3 id='body' align='center'>파이썬을 중심으로 다양한 웹크롤링 기술 발달</h3> \
            </body> \
        </html>"
soup = BeautifulSoup(html, "html.parser")
# 태그로 검색 방법
title_data = soup.find('h1')
print(title_data.get_text())
print(title_data['id'])

title_data = soup.find('h2')
print(title_data.get_text())
print(title_data['class'])

title_data = soup.find('h3')
print(title_data.get_text())
print(title_data['align'])