본문 바로가기

BLOG/웹크롤링

[웹크롤링] 네이버 - 원하는 검색어가 입력된 페이지 열기

 

네이버에서 원하는 검색어를 입력한 뒤, 해당 페이지를 크롤링하는 방법은 다양한데요, 그중에서도 주소에 대해 params 값을 설정해서 해당 페이지 html을 가져오는 방법에 대해서 살펴보도록 하겠습니다.

(selenium을 사용하지 않고, requests를 사용한다는 가정하에 설명드립니다.)

 

 

우선, 전체적인 코드를 보여드리도록 하겠습니다.

 

from bs4 import BeautifulSoup     
import requests

url = "https://search.naver.com/search.naver?" 
params = {
    'where' : 'nexearch',
    'query' : '여행',
    'fbm' : '0'
}

resp = requests.get(url,params)
soup = BeautifulSoup(resp.content, 'lxml')

 

먼저, 필요한 라이브러리를 import 해주어야 하는데요, BeautifulSoup와 reqests 라이브러리를 import 해주었습니다.

 

세 번째 코드부터가 살펴볼 핵심 내용인데요, 먼저 검색어가 입력되었을 때의 페이지의 url에 대한 이해가 필요합니다.

네이버 홈페이지에 '여행'이라고 입력한 뒤 검색버튼을 누르고 나오는 페이지의 url은 다음과 같습니다.

 

search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=0&ie=utf8&query=여행

 

위 주소를 보면, search.naver.com/search.naver? 까지가 기본 주소고, where=nexearch&sm=top_hty&fbm=0&ie=utf8&query=여행 가 해당 페이지의 정보를 담고 있는데요,

'여행' 이라는 키워드(query=여행)가 검색된 페이지(where=nexearch)를 의미합니다.

 

즉, 'query=여행'에서 '여행' 말고 다른 단어를 입력하면 그 단어에 대해 검색된 페이지가 나오는데요,

이를 이용하여 페이지를 불러오도록 하면 됩니다.

 

한편, 위 코드에서 세 번째 줄 코드를 보면 url에 기본 주소를 입력해주었고,

딕셔너리 형태의 'params'에 'where' : 'nexearch'로, 'query'는 '여행'으로, 그리고 'fbm' 은 '0' 으로 설정해줌으로써 구체적인 정보를 담았습니다.

 

그리고 아래 9번째 코드에 requests.get() 함수에 url과 params를 인자로 함께 넣어주면 해당 페이지를 가리키는 url이 만들어진답니다.

이제 이 url로 맨 아래 BeautifulSoup()를 이용하여 해당 본문을 가져올 수 있게 됩니다.