무비차트는 기본적으로 top 7까지 소개하는 식으로 되어있다. 웹 크롤링을 이용하면 이 무비차트를 직접 들여다 보지 않고도 언제든 원하는 순위들을 뽑아낼 수 있다.
1. 두가지 모듈과 함수를 호출
urllib이라는 모듈을 호출하자. 이 모듈에서 request 함수를 req라는 이름으로 꺼내쓰도록 하자. (알리아스)
웹 크롤링 소개에서도 말했던 Beautifulsoup역시 bs4라는 모듈에서 호출해야한다.
req.urlopen으로 무비차트의 url을 불러왔으나 이상한 코드가 출력될 것이다. 바로 이때가 beautifulsoup을 쓸 차례다.
이 정제된 코드는 웹 크롤링의 '광산'이다. 이제부터 이 코드를 이해하고, 원하는 대로 뽑아낼 수 있어야한다.
다시 무비차트 페이지로 돌아가자.
이제 서버가 작성해 놓은 html 코드를 볼 차례다. 내가 뽑을 것은 영화 타이틀이기 때문에 영화 제목에 우클릭하여
검사를 누르자.
오른쪽에 실제 서버의 개발자가 작성해 놓은 html코드가 뜬다. 영화제목에 해당되는 코드가 오른쪽에 파란색 박스안에 담긴 부분이라고 보면된다.
2. css 선택자를 이해해야 한다.
html 코드들은 위의 사진처럼 '요소'라고 하는 단위로 구성되어 있다. 지금부터 나오는 용어는 약속으로 간주하자.
위 사진처럼( 악필양해..) 요소는 이루어진다. 속성명과 속성값은 하나의 요소에 두 개씩도 가능하며, 내용자체가
1 요소인 (영어에서 종속절을 생각하면 이해가 빠르다.) 코드들도 있다. 물론 구체적인건 일단 생략하겠다.
지금 중요한건 저것들을 구별할 수 있느냐다.
"strong.title"은 "캡쳐명.속성값"이라는 것을 이제 알 수 있다. 속성명은 어딨지?(css 선택자인 "."이 그에 해당)
이때 주의할 것은 속성명이 두 가지가 있으므로 그에 따른 선택자를 잘 구분해서 사용하자.
속성명이 저 위의 예시처럼, Class라면 "태그명.속성값" 으로, id라면 "태그명#속성값"으로 써야한다.(ex: "strong#title")
3. 부모-자손 관계, 조부모-후손 관계 이해
한 요소에 들여쓰기로 또 한가지 요소가 들어있는 형태가 부모-자손 관계이다. 이 관계는 요소의 태그명이나 속성값들이 겹칠 경우 독립적이고 찾고자하는 내용만 찾아낼때 유용하게 쓰인다.
조부모-후손은 부모 상위에 또 다른 요소가 있을 때 성립할 수 있는 관계이다. (사진은 생략)
위의 사진은 조부모관계를 이용하지 않았을 때 출력결과이다. for문을 쓴 이유는
title이 리스트형식으로 반환되기 떄문이다. (그래서 그냥 print(title)은 리스트 형식으로 반환된다.)
css 선택자가 이경우에는 " "(공백)으로 이렇게 표기하면 된다. (설명하진 않았지만 i.string은 리스트 형식의 title에서의 '내용'을 뽑는 것.)
몇 개를 뽑을지, 몇번 째만 뽑을지는 반복문에서 count 변수를 사용하던지, while문 break를 이용해도 될 것 같다.
'웹크롤링' 카테고리의 다른 글
웹 크롤링(Web crawling) 0.소개 (0) | 2021.08.23 |
---|
Comment