Data Engineering/Crawling

[Crawling] BeautifulSoup

YSY^ 2020. 8. 4. 14:13

▣ BeautifuSoup

- HTML이나 XML 문서 내에서 원하는 정보를 가져오기 위한 파이썬 라이브러리.

- 설치 : pip install beautifulsoup4 

 

▣ 코딩 패턴

1. BeautifulSoup 클래스 import

2. BeautifulSoup 객체 생성 
    - 생성시 조회할 HTML 문서 전달

3. 문서내에서 필요한 정보 조회
    - 태그이름과 태그 속성으로 조회
    - css selector를 이용해 조회
    - . 표기법을 이용한 탐색(Tree 구조 순서대로 탐색)

 

▣ 객체 생성

- BeautifulSoup(html str [, 파서])

- 매개변수

1. 정보를 조회할 html을 string으로 전달

2. 파서

- lxml : 매우 빠르다. html, xml 파싱 가능(xml 파싱은 lxml만 가능)
- 사용시 install 필요 
- `pip install lxml`

 

▣ 문서내에서 원하는 정보 검색

Tag 
- 하나의 태그(element)의 데이터를 담은 객체   
    - BeautifulSoup 조회메소드들의 조회결과 반환타입.   
    - 아래 조회 함수들을 이용해 조회하면 그 결과를 Tag 객체나 Tag 객체들을 담은 List로 반환한다.   
    - Tag 객체를 이용해 element로 부터 text나 attribute등을 조회하거나 그 하위 element 들을 추가로 조회할 수 있다.

 

# 태그의 속성값 조회**
        - tag객체.get('속성명') 
        - tag객체['속성명']
        - ex) tag.get('href') 또는 tag['href']
# 태그내 text값 조회**
        - tag객체.get_text()
        - tag객체.text
        - tag.get_text() 또는 tag.text
# contents 속성**
        - 조회한 태그의 모든 자식 요소들을 리스트로 반환
        - child_list = tag.contents

▣ 조회 함수

태그의 이름으로 조회

-  find_all(), find()

- **find_all**(name=태그명, attrs={속성명:속성값, ..})
   - 일치하는 모든 태그들을 반환

- **find**(name=태그명, attrs={속성명:속성값})
    - 일치하는 태그를 반환
    - 일치하는 태그가 여러개일 경우 첫번째 것 하나만 반환한다.


▶ css selector를 이용해 조회

- select(), select_one() - select(selector='css셀렉터')
    - css 셀렉터와 일치하는 tag들을 반환한다.
- select_one(selector='css셀렉터')
    - css 셀렉터와 일치하는 tag를 반환한다.
    - 일치하는 것이 여러개일 경우 첫번째 것 하나만 반환한다.
- `.` 표기법. dom tree 구조의 계층 순서대로 조회
    - 위의 두방식으로 찾은 tag를 기준으로 그 주위의 element 들을 찾을 때 사용

 

728x90
반응형