03. 침착맨의 기사를 여러 페이지, 다양한 정렬로 스크래핑 해오자.

2021. 9. 7. 22:04파이썬/데이터 스크래핑

자 이건 이제 다들 익숙하시죠잉??

자 이렇게 query에 검색어를 넣어주고~ input 함수로 값을 받아올거에요옹~ 이걸 설명하자면~

 

https://search.naver.com/search.naver?where=news&query=침착맨&sort=0

https://search.naver.com/search.naver?where=news&query=침착맨&sort=1

https://search.naver.com/search.naver?where=news&query=침착맨&sort=2

이 링크를 들어가보면 관련도순, 최신순, 오래된순으로 정렬을 해주죠? 그러니까 네이버는 브라우저가 특정 기능이 URL을 통해 나타나게 되게 설정되어 있는 겁니다~

그러니까 우리가 그동안 돌렸던 URL에 이걸 추가하게 되면 우리도 정렬을 편하게 할 수 있게 되는 거죠~ 같은 맥락으로

&start= 은 바로 페이지 기능입니다!. 저기에 적절한 값을 넣어주면 1페이지에서 2페이지로 넘어갈 수 있는거죠~

https://search.naver.com/search.naver?where=news&query=침착맨&sort=0&start=1

https://search.naver.com/search.naver?where=news&query=침착맨&sort=0&start=11

https://search.naver.com/search.naver?where=news&query=침착맨&sort=0&start=21

페이지는 1 - > 11 -> 21 이런 식으로 넘어가죠?? 왜 그러냐면 걍 여기 개발자 맘일 겁니다~ 이유는 나도 몰라잉~

그리고 이렇게 우리가 추출해올 정보를 저장해 줄 리스트를 마련해주고~

 자 이렇게 여러 페이지를 탐색할 수 있는 코드를 짜보았는데요~ range () 함수 를 써보세요잉~

range()가 매개변수가 3개일 때는 (시작 숫자, 도착 숫자,  커지는 값)  입니다잉~ 도착 숫자가 되는 순간 for문은 종료가 됩니다잉~

그러니까 range(1, 31, 10)이면 1, 11, 21의 숫자를 내보내고 31에 도착했을 떄는 코드를 실행하지 않고 꺼져버리는 거죠잉~

예를 들어 우리는 우리가 5를 입력해준다면 1, 11, 21, 31, 41 이라는 숫자를 내보고 51에 도착하는 순간 for문이 끝나는 겁니다잉~ 꼭 이렇게 안해도 되고 page_input에다가 -1을 해주고 10을 곱해줘도 됩니다잉~

그리고 page_input은 문자열이기 때문에 꼭 int로 형변환을 해주어야 합니다잉~ (input으로 입력받으면 전부 다 문자열이 됩니다잉~??)

 

이렇게 페이지에서 소스를  가져오는 코드는 전시간과 같습니다잉~

이것도 같습니다잉~ 한페이지에서 가져온 소스에서 URL을 추출하는 과정입니다잉~

try문을 사용해준 이유는 해당 페이지에 네이버 뉴스가 없을 수도 있기 때문입니다잉~

 

저 이제 우리는 우리가 가져온 무수히 많은 URL로 접속해줄 것입니다잉~

자 이거 했죠잉~?

저번에 했던 거랑 똑같죠잉~

자 모두 똑같죠잉 저번에 했던거랑? 복습한다고 생각하고 걍 읽어만 보세요잉~

반응형