|
|
1번째 줄: |
1번째 줄: |
| {{파이썬}}
| | ===옮김=== |
| | |
| ==개요== | |
| HTML페이지로부터 정보를 추출한다.
| |
| | |
| 태그, class, id 같은 속성으로 필요한 데이터에 접근한다.
| |
| | |
| 크롤링은 requests 모듈로도 가능하지만, 코드를 파이썬이 이해하는 구조로 바꾸어주진 못한다. 때문에 사용하는 도구. 데이터는 requests나 다른 모듈로 불러오고, 분석을 BeautifulSoup에서 수행한다.
| |
| | |
| | |
| pip install beautifulsoup4
| |
| | |
| 파서 라이브러리를 골라 사용할 수 있는데 pip install lxml 로 설치해 사용한다.(다양한 파서 종류가 있으니, 적절한 것을 찾아 사용하면 된다.) 파서는 lxml을 많이 사용하는 듯.<br />
| |
| | |
| ==사용== | |
| | |
| ===기본 사용법===
| |
| {| class="wikitable"
| |
| |+
| |
| !과정
| |
| !설명
| |
| !방법
| |
| |-
| |
| |url 열기
| |
| |url 문서를 연다.
| |
| 뷰티플 스프를 불러오는 과정에 유의하자.
| |
| |<syntaxhighlight lang="python">
| |
| from bs4 import BeautifulSoup
| |
| from urllib.request import urlopen
| |
| | |
| with urlopen(url) as 문서: # 이처럼 열어 사용한다. with을 사용하면 save()를 따로 할 필요가 없다.
| |
| 명령
| |
| </syntaxhighlight>
| |
| |-
| |
| |BeautifulSoup와 연결
| |
| |특정 html 문서를 파서와 연결한다.
| |
| |<syntaxhighlight lang="python">
| |
| html = BeautifulSoup(문서, lxml) # 파서 라이브러리를 lxml로 지정해 사용한다.
| |
| </syntaxhighlight>
| |
| |-
| |
| |태그 찾기
| |
| |위 명령 부분에 작성한다.
| |
| find_all() 혹은 find() 사용.
| |
| |<syntaxhighlight lang="python">
| |
| 내용 = html.find('찾을태그', class_='찾을클래스')
| |
| </syntaxhighlight>find()는 가장 위에 있는 것 하나만 찾는다.
| |
| | |
| find_all()은 결과를 리스트로 반환한다.
| |
| | |
| | |
| 옵션에서 class 대신 class_를 사용하는 것은 파이썬 내부에 class라는 명령이 있기 때문이다.
| |
| | |
| | |
| 찾아내면 태그를 통째로 가져오는데, 택스트만 추출하려면 여기에 다시 .text 로 텍스트 속성에 접근해야 한다.
| |
| |-
| |
| |
| |
| |
| |
| |
| |
| |}
| |
| | |
| ===기타 사용법===
| |
| {| class="wikitable"
| |
| !의도
| |
| !설명
| |
| !방법
| |
| |-
| |
| |하위 속성에 접근
| |
| |닷 문법으로 하위태그에 접근할 수 있다.
| |
| |<syntaxhighlight lang="python">
| |
| 내용.a # 찾은 내용 안의 a태그에 접근한다.
| |
| </syntaxhighlight>
| |
| |-
| |
| |
| |
| |
| |
| |
| |
| |}
| |