DevSSOM

파이썬 크롤링 - HTML 태그 속성 본문

Python/크롤링

파이썬 크롤링 - HTML 태그 속성

데브쏨 2021. 6. 27. 17:48
반응형

HTML 태그와 속성

<div class="devssom" id="title">제목</div>
#태그 속성           속성

HTML에는 여러 종류의 태그와, 태그에 특정 기능이나 유형을 적용하는 속성이 있음. div라는 태그에 class와 id 속성이 각각 있는 것임.

 

find 함수를 이용해서 찾은 어떤 태그에 속성이 무엇무엇이 있는지 확인하려면, attrs 멤버변수를 출력하면 됨.

div = soup.find("div")
print(div.attrs)

그리고 attrs 딕셔너리의 키로 인덱싱해서 태그의 속성에 접근할 수 있음.

print(div['class'])    # div태그 안에 있는 class가 어떤 태그인지 출력

 

href 속성

a 태그는 하이퍼링크를 걸어주는 태그로써 이동할 URL을 href 속성에 담고 있음.

<a href="https...">기사 제목</a>

그래서, a 태그를 먼저 찾고 그 다음에 해당 a 태그의 href 속성을 얻음으로써 링크된 페이지의 URL을 얻을 수 있음.

a = soup.find("a")
href_url = a["href"]

 

Children, Name 속성

웹 사이트의 구조가 복잡한 경우, 다양한 옵션을 적용해서 HTML 태그를 검색해야 할 수도 있어. 이때 children이라는 속성은 어떤 태그가 포함하고 있는 태그를, name은 어떤 태그의 이름을 의미하는 속성.

<div>
    <span>span1</span>
    <span>span2</span>
    <p>p tag</p>
    <img ... />
</div>

이 div라는 태그는 <span>1, <span>2, <p>, <img> 이렇게 여러 태그를 담고 있음. beautifulSoup의 children 속성으로 어떤 태그가 포함하고 있는 태그들도 조회할 수 있어. 어떤 div 태그를 찾고, 그 div 태그에 포함된 태그들의 리스트를 얻는 코드를 이렇게 씀.

soup.find("div").children
# span, p, img 태그를 갖는 리스트를 얻게 됨

이때 그 어떤 태그의 이름을 알고 싶다면 name 속성을 이용할 수 있어. 만약, 태그가 존재하지 않는 경우엔 None 값을 얻음.

children = soup.find("div").children
for child in children :
    print(child.name)
    # span, span, p, img가 각각 출력됨

 

728x90
반응형
댓글