본문 바로가기

프로젝트 목록/ParseWEB

ParseWEB [1-2] 다음 실시간 검색어 파싱

사전 정보 수집

다음 실시간 검색어의 경우에도 네이버와 동일하게 메인 홈페이지에서 보는 것이 가능하므로 다음 메인 홈페이지 소스를 보고 어느 부분에 실시간 검색어가 들어가 있는지 확인하여 그 부분의 데이터를 가져오는 방식으로 구현하려 한다.


먼저 크롬을 통해 다음 메인 홈페이지로 이동한 다음 F12를 이용해서 개발자 도구를 켠다. 현재 실시간 검색어 1위에 해당하는 키워드를 Elements 탭에서 검색한다.

포스팅 작성 기준으로 보면 우윤근이 1위로 되어 있으므로 "우윤근"으로 검색한다. 그러면 아래와 같이 해당 검색어가 표시가 되는 것을 볼 수 있다.


해당 검색어를 포함하는 태그는 a이고 속성은 classlink_issue가 할당된 것을 볼 수 있다. 그래서 a.link_issue로 검색을 해보면 총 50개의 태그가 검색되는 것을 볼 수 있다.


해당 태그의 내용을 보면 1위에서 10위까지의 내용이 5개씩 중복인 것을 확인할 수 있었다.


중복을 줄이기 위해서 실시간 검색어의 정보를 하나씩만 가지고 있는 부모 노드를 찾도록 하겠다.

10개의 원소를 포함하는 공통된 부모 노드를 확인한 결과 태그는 div이고 속성은 classhotissue_mini가 할당된 것을 확인할 수 있었다. 그래서 div.hotissue_mini a.link_issue로 검색을 하면 총 10개의 태그가 검색되는 것을 볼 수 있다.


이 정보를 통해서 div.hotissue_mini a.link_issue에 해당하는 태그에서 텍스트 값을 읽으면 1위부터 10위까지의 실시간 검색어를 얻을 수 있다는 것을 알 수 있었다.

구현하기

from bs4 import BeautifulSoup
import requests

def get_content():
    req = requests.get('https://www.daum.net/')
    content = req.content

    soup = BeautifulSoup(content, 'html.parser')
    elements = soup.find('div', class_='hotissue_mini').find_all('a', class_='link_issue')

    return list(map(lambda x: x.text, elements))

print(get_content())

시연 결과

아래 이미지와 같이 다음의 실시간 검색어를 잘 가지고 오는 것을 확인할 수 있다.