데이터 수집을 하기 위한 방법 중 CSS 선택자를 활용하여 원하는 데이터를 가져올 수가 있는데요.
오늘은 CSS 선택자에 대해 알아보도록 하겠습니다.
1. 선택자 기본 서식
서식 | 설명 |
* | 모든 요소를 선택 |
<요소 이름> | 요소 이름을 기반으로 선택 |
.<클래스 이름> | 클래스 이름 기반으로 선택 |
#<id 이름> | id 속성을 기반으로 선택 |
2. 선택자들의 관계를 지정하는 서식
서식 | 설명 |
<선택자>, <선택자> | 쉼표로 구분된 여러 개의 선택자를 모두 선택 |
<선택자> <선택자> | 앞 선택자의 후손 중 뒤 선택자에 해당하는 것을 모두 선택 |
<선택자> > <선택자> | 앞 선택자의 자손 중 뒤 선택자에 해당하는 것을 모두 선택 |
<선택자> + <선택자> | 같은 계층에서 바로 뒤에 있는 요소를 선택 |
<선택자> ~ <선택자> | 선택자1부터 선택자2까지의 요소를 모두 선택 |
3. 선택자 속성을 기반으로 지정하는 서식
서식 | 설명 |
<요소>[<속성>] | 해당 속성을 가진 요소를 선택 |
<요소>[<속성>=<값>] | 해당 속성의 값이 지정한 값과 같은 요소를 선택 |
<요소>[<속성>~=<값>] | 해당 속성의 값이 지정한 값을 단어로 포함(띄어쓰기로 구분해서 완전히 포함)하고 있다면 선택 |
<요소>[<속성>|=<값>] | 해당 속성의 값으로 시작하면 선택(이때 하이픈 기호로 구분해서 확인) |
<요소>[<속성>^=<값>] | 해당 속성의 값이 지정한 값으로 시작하면 선택 |
<요소>[<속성>$=<값>] | 해당 속성의 값이 지정한 값으로 끝나면 선택 |
<요소>[<속성>*=<값>] | 해당 속성의 값이 지정한 값을 포함하고 있다면 선택 |
4. 예제로 살펴보기
다음과 같은 HTML 구성이 있을 때,
html = '''
<ul id='fruits'>
<li id='apple'>Apple</li>
<li id='banana'>Banana</li>
<li id='orange'>Orange</li>
<li id='mango'>Mango</li>
<li id='melon'>Melon</li>
</ul>
'''
mango를 추출하기 위해 사용할 수 있는 선택자를 살펴보겠습니다.
from bs4 import BeautifulSoup
soup = BeautifulSoup(html, 'html.parser')
fruit = lambda q: print(soup.select_one(q).string)
fruit("#mango")
fruit("li#mango")
fruit("ul > li#mango")
fruit("#fruits #mango")
fruit("#fruits > #mango")
fruit("#ul#fruits > li#mango")
fruit("li[id='mango']")
혹은
(주의) 0부터 시작할 경우 3은 4번째 요소가 된다
print(soup.select("li")[3].string)
print(soup.find_all("li")[3].string)
결과는
mango
mango
mango
mango
mango
mango
mango
mango
mango
가 될것입니다.

'AI > 데이터 수집' 카테고리의 다른 글
Selenium을 활용한 로그인 (0) | 2021.02.02 |
---|---|
requests 모듈의 메서드 (0) | 2021.01.31 |
requests를 사용하여 로그인 (0) | 2021.01.31 |
상대경로 및 절대경로 (0) | 2021.01.26 |
파이썬을 활용하여 데이터 받아오기(urllib을 활용) (0) | 2021.01.24 |