본문 바로가기
크롤링

내맘대로 크롤링(2): CSS 선택자의 종류

by 너티드코오딩 2023. 7. 9.

이번에는 CSS 선택자를 알아보자.

 

태그 선택자: 태그의 이름 <h1> <a> 와 같이 h1, a 로 선택한다
id 선택자: 별명을 말하는 것으로 예를들어 <div id="a1"> 으로 표시가 되어 있을때, #a1 으로 찾는다.
class 선택자: 태그 그룹의 별명으로 예를들어 <div class="a1">으로 표시가 되어 있을 때 .a1 으로 찾는다
자식선택자: 별명없고 대체로 <span> 태그일 때. 찾는 법은 하위로 들어가면 됨 .a1>span

 

정말 필수적으로 알아둬야 하는 부분!

그런데 막상 실제 웹사이트가 이렇게 예쁘게 되어 있으면 얼마나 좋을까.

그렇지 않더라

 

특히 띄어쓰기가 많이 되어 있거나.. 반복되는 구조로 리스트르 해서 뽑으려고 하는데 하필 내가 원하는건 <tbody> 인데 밖에 그 class가 정의되어 있거나..

 

이럴때는 이제 <tbody> 자식선택으로 들어가야하더라고.

 

내가 크롤링한 사이트를 대상으로 예를 들어보자.

일단 사이트에는 span 태그로 다 묶여 있어서 span의 text를 가져와야 하는 상황이었다.

 

먼저 tbody를 찾아냈고(이건 다음 번에 자세히 설명해보겠음.. 나도 잘 모르지만 ㅋ)

infos로 리스트로 받아냈다. infos는 하나의 리스트로, 모든 내용이 담겨있고,

infos = soup.find_all('tbody', {'id' : 'id_name'})

이렇게 tbody를 추출할 수 있었다!

 

infos는 tr들로 구성되어 있어서 우선 tr을 찾고 각 tr들에 대한 내용을 추출하기로 결정함!

infos = infos[0].find_all('tr')

이렇게 tr 을 찾아냈는데 참 신기하게도 'tr'로 tr을 찾을 수 있다는게..허허

 

이번 챕터에서 꼭 기억해야 할 것

 

1) tbody를 가져오는 법

2) tr을 찾는법

 

그앞까지는 전부 이해했는데,  tbody를 어떻게 가지고 오나 했는데

find_all('태그명', {'id':'id명'})

으로 갖고 올 수 있었다. 이런 딕셔너리 형태는 참 많이 쓰이는것같군!!