Programming/Python

BeautifulSoup을 이용한 태그의 특정 텍스트, 속성 값 불러오기

패치#노트 2021. 8. 5. 12:07
728x90
반응형

안녕하세요.

제목 그대로 크롤링을 하다가 보면 다양한 값들을 읽어와야 하는데요.

 

그중에 특정 텍스트나 속성 값을 불러오는 방법에 대해서 간략히 알아보도록 하겠습니다.

 

[예시]

from bs4 import BeautifulSoup

html_source = '''
    <div class="Top div class 입니다.">
        <div class="Second div class 입니다.">
            <ul class="ul 입니다.">
                <li data-sequence='12345645'>
                <a id="link" href="특정 링크">부자되기 프로젝트!!!!!</a></li>
            </ul>
        </div>
    </div>
'''

soup = BeautifulSoup(html_source, 'html.parser')

a_tag = soup.find_all('a', attrs={"href" : "특정 링크"})

# 태그 불러오기
print('Soup 내용 그대로 불러오기', a_tag)

# 태그내 텍스트 불러오기
print('텍스 내용 불러오기', a_tag[0].text)

# attribute 값 얻어오기
li_tag = soup.find_all('li')
print(li_tag) # 리스트 형태로 반환

attribute = li_tag[0].attrs #리스트의 0 번째 태그
print('attribute 값 얻어오기',attribute)
print('특정 attribute 값 얻오기', attribute['data-sequence'])

 

[결과 값]

Soup 내용 그대로 불러오기 [<a href="특정 링크" id="link">부자되기 프로젝트!!!!!</a>]
텍스 내용 불러오기 부자되기 프로젝트!!!!!
[<li data-sequence="12345645">
<a href="특정 링크" id="link">부자되기 프로젝트!!!!!</a></li>]
attribute 값 얻어오기 {'data-sequence': '12345645'}
특정 attribute 값 얻오기 12345645

soup의 find_all은 보통 리스트형태로 반환됩니다.

리스트로 감싸여 있기 때문에 인덱스를 지정하고 텍스트 불러오기나, attribute 값들을 가지고 오면 됩니다.

 

감사합니다.

728x90
반응형