사전 정보 수집
네이버 실시간 검색어의 경우 네이버 메인 홈페이지에서 보는 것이 가능하므로 네이버 메인 홈페이지 소스를 보고 어느 부분에 실시간 검색어가 들어가 있는지 확인하여 그 부분의 데이터를 가져오는 방식으로 구현하려 한다.
먼저 크롬을 통해 네이버 메인 홈페이지로 이동한 다음 F12를 이용해서 개발자 도구를 켠다. 현재 실시간 검색어 1위에 해당하는 키워드를 Elements 탭에서 검색한다.
포스팅 작성 기준으로 보면 황교익이 1위로 되어 있으므로 "황교익"으로 검색한다. 그러면 아래와 같이 해당 검색어가 표시가 되는 것을 볼 수 있다.
해당 검색어를 포함하는 태그는 span
이고 속성은 class
에 ah_k
가 할당된 것을 볼 수 있다. 그래서 span.ah_k
로 검색을 해보면 총 41개의 태그가 검색되는 것을 볼 수 있다.
해당 태그의 내용을 보면 1위의 내용은 3개가 중복이고, 2위에서 20위까지의 내용은 2개씩 중복인 것을 확인할 수 있었다.
중복을 줄이기 위해서 실시간 검색어의 정보를 하나씩만 가지고 있는 부모 노드를 찾는 것으로 목표를 설정하였다. 그러면 해당 부모 노드 내에서 검색을 하면 중복되지 않고 1개씩만 나올 수 있기 때문이다.
20개의 원소를 포함하는 공통된 부모 노드를 확인한 결과 태그는 div
이고 속성은 class
에 ah_list
가 할당된 것을 확인할 수 있었다. 그래서 div.ah_list span.ah_k
로 검색을 하면 총 20개의 태그가 검색되는 것을 볼 수 있다.
이 정보를 통해서 div.ah_list span.ah_k
에 해당하는 태그에서 텍스트 값을 읽으면 1위부터 20위까지의 실시간 검색어를 얻을 수 있다는 것을 알 수 있었다.
구현하기
from bs4 import BeautifulSoup import requests def get_content(): req = requests.get('https://www.naver.com/') content = req.content soup = BeautifulSoup(content, 'html.parser') elements = soup.find('div', class_='ah_list').find_all('span', class_='ah_k') return list(map(lambda x: x.text, elements)) print(get_content())
시연 결과
아래 이미지와 같이 네이버의 실시간 검색어를 잘 가지고 오는 것을 확인할 수 있다.
'프로젝트 목록 > ParseWEB' 카테고리의 다른 글
ParseWEB [1-5] 알라딘 베스트 셀러 파싱 (0) | 2019.01.21 |
---|---|
ParseWEB [1-4] yes24 베스트 셀러 파싱 (0) | 2018.12.18 |
ParseWEB [1-3] 네이트 실시간 검색어 파싱 (2) | 2018.12.17 |
ParseWEB [1-2] 다음 실시간 검색어 파싱 (0) | 2018.12.15 |
ParseWEB [0] 프로젝트 개요 (0) | 2018.12.13 |