Hyesung Oh

#python#crawling#networkx - 연관검색어 크롤링 및 시각화 [1] 본문

DEV/Python

#python#crawling#networkx - 연관검색어 크롤링 및 시각화 [1]

혜성 Hyesung 2019. 8. 21. 17:17
반응형

오늘은 제가 인턴 입사 과제로 이틀동안 풀었던 문제를 소개할까 합니다.

문제는 아래와 같습니다.

  • 기본적인 크롤링 단계

사용한 모듈입니다. requests 와 bs4 모듈이 핵심입니다.

requests : 서버에 요청하여 응답을 받아옴

bs4: 응답을 통해 받아온 페이지에서 우리가 원하는 부분을 파싱할 수 있도록 해주는 모듈

r : 서버 응답. 서버가 정상 응답을 하였다면 print(r) 결과로 200을 출력해야함.

bs4_r : 응답에 BeautifulSoup 을 먹여줌으로서 페이지에

서 원하는 부분을 태그파싱을 통해 가져올 수 있게 해줌.

이제 아래에 연관 검색어를 가져와 보자.
페이지에서 원하는 연관 검색어 부분 가져오는 코드

tag: div class: llist_keyword_type2 하위에 있는 tag: span, class: wsn 을 따와서 span_list 에 리스트형태로 저장한다. span_list 의 각 요소에는 연관 검색어 정보가 포함되어있다.

해당 페이지에서 f12 개발저 도구 버튼을 누르면 아래와 같이

*tip - 우리가 원하는 연관검색어가 있는 부분에 대한 태그를 찾을 수 있다. 좌측 상단의 화살표 버튼을 눌러서 페이지의 원하는 부분을 클릭하면 해당 부분의 태그를 위 사진과 같이 검은색으로 표시해준다.

연관 검색어가 포함되어 있는 span_list의 요소에서 span_list[i].text 를 해줌으로서 우리가 원하는 검색어 단어 부분만 가져올 수 있다. 

데이터 프레임으로 저장 및 시각화

이제 위 단계를 함수로 만들어 함수안에서 함수를 호출하는 재귀함수를 만들어 봄.

위 함수를 시행하면 아래와 같습니다.

각 크롤링 단계의 결과는 데이터 프레임형태로 전역 변수 딕셔너리에 저장하도록 했습니다.

n=3 총 세단계, 3: 첫 검색어, 2: 하위 검색어 1: 최하위 검색어
1,2,3, merge 최종 dataset

다음 포스팅에서는 크롤링한 검색어와 연관검색어간의 관계를 networkx 를 이용하여 간단히 시각화 해본 것을 공유하도록 하겠습니다. 

반응형
Comments