본문 바로가기

Python/Crawler

PYTHON 크롤링을 이용한 수산식품 분석하기 - 1

준비하는 과제 중, 수산식품 데이터베이스를 분석하여 사용자의 기호도를 추출하는 내용이 있다.

짧게 작성한 시나리오는 다음과 같다.

1. 수산식품 인기 검색어 가져오기

2. 일별로 테이블에 집어넣기

3. 추출된 인기 검색어를 바탕으로 SNS에 검색하기

4. 결과값으로 나온 비정형 데이터들을 분석하기

첫번째로, 수산식품 인기검색어를 가져오기 위해 네이버 데이터랩을 이용하려 했다.


네이버 데이터랩에는 쇼핑인사이트 기능을 제공하고 있다.

이 곳에서 인기 검색어를 추출해내고자 했다.

분야는 식품 > 수산식품이다.

API를 사용하면 좋겠지만 인기검색어는 제공하지 않는다.

이 부분이 필요한데 직접 긁어오려고 하면 잘 되지 않는다.

https://datalab.naver.com/shoppingInsight/sCategory.naver?cid=50000159&where=shopping

실제 주소는 다음과 같은데 cid=(분야코드)로 이루어진 것을 알 수 있다.

분야코드는 기반 사이트인

https://search.shopping.naver.com/best100v2/detail.nhn?catId=50000159

에서 알 수 있다.

주소를 뽑아내도 실제로 크롤링 해보면 태그 값이 읽히지 않는데 막아놓은 것 같다 (추정)

chromedriver로 창을 열어보면 태그가 전부 막혀있는 새 창이 뜨기 때문이다.

때문에 조금 우회하여 쇼핑 카테고리 베스트 100의 인기 검색어를 사용한다.

https://search.shopping.naver.com/best100v2/detail.nhn?catId=50000159



네트워크를 분석하면 해당 주소가 나타난다



이 페이지의 태그를 크롤링 해온다.

#popularitySeafood import requests from bs4 import BeautifulSoup from selenium import webdriver import urllib.request import urllib.parse url = 'https://search.shopping.naver.com/best100v2/detail/kwd.nhn?catId=50000159&kwdType=KWD#' req = urllib.request.Request(url) sourcecode = urllib.request.urlopen(url).read() soup = BeautifulSoup(sourcecode, "html.parser") res = soup.find_all('span','txt') search_list = [] for n in res: search_list.append(n.get_text().replace("\n","").replace("\r","").replace("\t","")) print(search_list)

나타나는 결과값은 다음과 같다.

이 것을 활용하여 비정형데이터를 추출해낸다.