본문 바로가기

프로젝트

[크롤링] 네이버 뉴스 URL 쿼리 파라미터

현재 키워드를 기반으로 네이버 기사 본문 및 댓글 목록을 가져오는 프로젝트를 진행하고 있어 알게된 점을 정리해둔다.


네이버의 뉴스 검색 탭의 경우 옵션 탭을 통해 여러가지 필터 항목을 제시한다.

네이버 검색 - 뉴스 탭의 옵션 목록

 해당 옵션 목록을 단순 검색 뿐만이 아니라 크롤링에도 활용할 수 있다면 더 효율이 높아질 것이다. 또한 당연하게도 이러한 옵션들은 크롤링 과정에서도 활용할 수 있다.

 위 보이는 옵션들은 url의 query parameter 상에 표현된다.일부 검색 항목을 변경해가면서 검색을 진행하면 어떤 쿼리 값이 옵션과 대응되는지 볼 수 있다. 예를 들어 아래와 같이 검색 옵션을 지정하고 "윤석열"을 검색해보자.

최신순, 1개월, 경향 신문 옵션 선택

 위 옵션에서 발생한 URL은 다음과 같다.

https://search.naver.com/search.naver?where=news&sm=tab_pge&query=%EC%9C%A4%EC%84%9D%EC%97%B4&sort=1&photo=0&field=0&pd=4&ds=2023.09.03.15.52&de=2023.09.04.15.52&mynews=1&office_type=1&office_section_code=1&news_office_checked=1032&office_category=0&service_area=0&nso=so:dd,p:1d,a:all&start=11

다양한 쿼리가 있는데, 여러 옵션을 바꾸는 과정에서 알게된 쿼리들 중 의미 있어 보이는 일부를 표로 정리한다.

쿼리 이름 설명
where=news 뉴스 검색임을 의미 - ( 뉴스 기사 검색이면 디폴트 )
query=검색어 검색어 자리 검색하고 싶은 값
sort=N 정렬 기준 0: 관련도순, 1: 최신순, 2: 오래된순
pd=N 기간 기준 0: 전체 | 1: 1주 | 2: 1개월 | 3: 기간 설정(ds, de) | 
4: 1일 | 5: 1년 | 6: 6개월 | 7 ~ 12: 시간 기준 | 13: 3개월
news_office_checked: N 뉴스 언론사 번호(언론사 필터) 언론사 번호에 맞는 값
mynews=1 언론사 필터 적용 여부 0: 언론사 전체, 1: 언론사 필터 적용됨
office_type=1 언론사 검색 필터 부분 언론사 분류 = 1. (나머지는 알아서 찾아보기)
ds 검색 시작일 YYYY.MM.DD.HH.MM 꼴 ( HH,MM은 큰 의미 X )
de 검색 마지막일 YYYY.MM.DD.HH.MM 꼴 ( HH,MM은 큰 의미 X )
nso=so:dd,p:1d,a:all so는 sort, p는 pd에 대응되는 문자열을 가지며, sort + pd 또는 nso을 지정하면 된다.

직접 입력: p:fromYYYYMMDDtoYYYYMMDD
이외의 경우-> p:1d, all 등
start 검색한 뉴스 시작 번호. 10 단위로 증가 1에서 시작, 1 + 10 * N 꼴의 자연수

위에서 사용할만한 옵션은 pd = 3, mynews = 1, office_type = 1, news_office_checked: N 같은 것이 있다. pd = 3으로 지정하면 ds, de 쿼리를 이용하여 구체적인 검색 시작 및 끝 날짜를 지정할 수 있으므로 요구 날짜 범위 내 데이터 탐색이 가능하다.

표에서 적용 가능한 옵션을 일부 정리한 그림