뷰티플수프 문서

1 개요[ | ]

Beautiful Soup Documentation
뷰티플수프 문서
그 물고기 병사는 옆구리에서 거의 자기만큼이나 큰 편지를 꺼내면서 시작했습니다.

뷰티플수프는 HTML과 XML 파일로부터 데이터를 뽑아내기 위한 파이썬 라이브러리이다. 여러분이 선호하는 해석기와 함께 사용하여 일반적인 방식으로 해석 트리를 항해, 검색, 변경할 수 있다. 주로 프로그래머의 수고를 덜어준다.

이 지도서에서는 뷰티플수프 4의 중요한 특징들을 예제와 함께 모두 보여준다. 이 라이브러리가 어느 곳에 유용한지, 어떻게 작동하는지, 또 어떻게 사용하는지, 어떻게 원하는대로 바꿀 수 있는지, 예상을 빗나갔을 때 어떻게 해야 하는지를 보여준다.

이 문서는 뷰티플수프 4.9.3을 다룬다.이 문서의 예제는 Python 2.7 및 Python 3.8에서 동일하게 작동한다.

혹시 뷰티플수프 3에 관한 문서를 찾고 있다면 뷰티플수프 3는 2020년 12월 31일부터 지원이 중단된다는 것을 알아두자. 뷰티플수프 3와 뷰티플수프 4의 차이점은 #BS4 코드 이식하기를 참조하자.

이 문서는 Beautiful Soup 사용자에 의해 다른 언어로도 번역되었다.

1.1 도움 얻기[ | ]

뷰피플수프에 질문이 있거나, 문제가 있다면 토론 그룹에 메일을 보내자. 문제가 HTML 문서 파싱과 관련된 경우, 해당 문서에 대해 diagnose() 함수가 보여주는 내용을 포함해야 한다.

2 퀵 스타트[ | ]

다음은 이 문서에서 예제로 사용할 HTML 문서이다. 이상한 나라의 앨리스 이야기의 일부이다:

html_doc = """<html><head><title>The Dormouse's story</title></head>
<body>
<p class="title"><b>The Dormouse's story</b></p>

<p class="story">Once upon a time there were three little sisters; and their names were
<a href="http://example.com/elsie" class="sister" id="link1">Elsie</a>,
<a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> and
<a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;
and they lived at the bottom of a well.</p>

<p class="story">...</p>
"""


"three sisters" 문서를 뷰피플수프에 넣으면 BeautifulSoup 객체가 나오는데, 이 객체는 문서를 내포된 데이터 구조로 나타낸다:

from bs4 import BeautifulSoup
soup = BeautifulSoup(html_doc)

print(soup.prettify())

다음은 간단하게 데이터 구조를 항해하는 몇 가지 방법이다:

soup.title
soup.title.name
soup.title.string
soup.title.parent.name
soup.p
soup.p['class']
soup.a
soup.find_all('a')
soup.find(id="link3")

일반적인 과업으로 한 페이지에서 <a> 태그에 존재하는 모든 URL을 뽑아 낼 일이 많다:

for link in soup.find_all('a'):
    print(link.get('href'))

또 다른 과업으로 페이지에서 텍스트를 모두 뽑아낼 일이 많다:

print(soup.get_text())

이것이 여러분이 필요한 것인가? 그렇다면, 계속 읽어 보자.

3 뷰티플 수프 설치하기[ | ]

데비안이나 우분투 리눅스 최신 버전을 사용하고 있다면, 시스템 패키지 매니저로 뷰티플수프를 설치하자:

$ apt-get install python-bs4 (for Python 2)

$ apt-get install python3-bs4 (for Python 3)

뷰티블수프 4는 PyPi를 통하여도 퍼블리시되어 있으므로, 시스템 패키지 관리자로 설치할 수 없을 경우, easy_install로 설치하거나 pip로 설치할 수 있다. 패키지 이름은 beautifulsoup4이며, 같은 패키지로 파이썬 2 그리고 파이썬 3에 작동한다.

$ easy_install beautifulsoup4

$ pip install beautifulsoup4

(이 BeautifulSoup 패키지가 혹시 원하는 것이 아니라면. 이전 버전으로 뷰티플수프 3가 있다. 많은 소프트웨에서 BS3를 사용하고 있으므로, 여전히 사용할 수 있다. 그러나 새로 코드를 작성할 생각이라면 beautifulsoup4를 설치하시기 바란다.)

easy_install도 pip도 설치되어 있지 않다면, 뷰티플수프 4 소스를 내려 받아 setup.py로 설치할 수 있다.

$ python setup.py install

다른 모든 것이 실패하더라도, 뷰티플수프 라이센스는 여러분의 어플리케이션에 통채로 꾸려 넣는 것을 허용하므로 전혀 설치할 필요없이 소스를 내려받아 bs4 디렉토리를 통채로 코드베이스에 복사해서 사용해도 된다.

필자는 파이썬 2.7과 파이썬 3.8에서 뷰티플수프를 개발하였지만, 다른 최신 버전에도 작동할 것이다.

3.1 설치 이후의 문제[ | ]

3.2 파서 설치하기[ | ]

4 수프 만들기[ | ]

5 객체의 종류[ | ]

뷰티플수프는 복잡한 HTML 문서를 Python 객체의 복잡한 트리 구조로 변환한다. 하지만 Tag, NavigableString, BeautifulSoup, Comment 4가지 객체만 다루면 된다.

5.1 Tag[ | ]

Tag 객체는 원래 문서에 있는 XML 또는 HTML 태그를 지원한다.:

soup = BeautifulSoup('<b class="boldest">Extremely bold</b>', 'html.parser')
tag = soup.b
type(tag)

태그에는 여러 속성과 메소드가 있다. 그 대부분을 #트리 탐색하기#트리 검색하기에서 다룰 것이다. 일단 여기서, 태그의 가장 중요한 기능은 이름과 속성이다.

5.2 이름[ | ]

모든 태그에는 이름이 있고, .name으로 접근할 수 있다:

tag.name


태그의 이름을 바꾸면, 그 변화는 뷰티블수프가 생성한 HTML 마크업에 반영된다:

tag.name = "blockquote"
tag

5.3 속성[ | ]

6 트리 탐색하기[ | ]

7 트리 검색하기[ | ]

8 트리 변경하기[ | ]

9 출력[ | ]

10 사용할 파서 지정하기[ | ]

11 인코딩[ | ]

12 행번호[ | ]

13 객체 동일성 비교[ | ]

14 브티플수프 객체 복사하기[ | ]

15 고급 파서 커스터마이징[ | ]

16 트러블슈팅[ | ]

17 이 문서 번역하기[ | ]

Beautiful Soup 문서의 새로운 번역에 감사드립니다. 번역은 Beautiful Soup 및 영어 문서와 마찬가지로 MIT 라이선스가 부여되어야 합니다.

번역을 메인 코드 베이스와 Beautiful Soup 웹사이트로 가져오는 방법에는 두 가지가 있습니다.

  • 1. Beautiful Soup 리포지토리의 브랜치를 생성하고 번역을 추가한 다음 소스 코드에 제안된 변경 사항을 적용할 때와 마찬가지로 메인 브랜치와의 병합을 제안합니다.
  • 2. 번역 링크와 함께 Beautiful Soup 토론 그룹에 메시지를 보내거나 메시지에 번역을 첨부합니다.

중국어, 브라질 포르투갈어 번역을 모델로 활용하세요. 특히, 문서의 HTML 버전이 아닌 소스 파일 ``doc/source/index.rst``를 번역하시기 바랍니다. 이렇게 하면 HTML뿐만 아니라 다양한 형식으로 문서를 게시할 수 있습니다.

18 뷰티플 수프 3[ | ]

19 참고[ | ]

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}