본론으로 들어가기 앞서.. .이게 어쩌다 보니 술집 추천 리스트가 됨
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
와인 / 칵테일 / 소주 / 맥주 /
이렇게 추천 술집 리스트가 나타날 예정
*사용프로그램: pycharm
*사용언어: python
client = MongoClient('localhost', 27017)
db = client.seoul_suljip
db 이름은 seoul_suljip
그리고 그 안에 분류로
suljip_wine/ suljip_cocktail/ suljip_soju/ suljip_beer 이렇게 저장
이번 프로젝트 이름은 네슐랭 (네이버+미슐랭)인데, 그 이유는 네이버 검색 api 로 찾은 맛집? 술집? 리스트를 사용하기 때문이져 ^^
1. 네이버 개발자 api 들어가서 오픈 API 이용신청 클릭
developers.naver.com/products/search/
2. 환경추가 > WEB 설정 클릭 하면 애플리케이션 등록 나오는데, 나는 검색을 이용할거니까 사용 api 를 검색으로~~
그리고 비로그인 오픈 API에는 본인의 로컬호스트를 이용하면 된다. ex) http://localhost:5000
3. 그러면 네이버에서 클라이언트 아이디랑 시크릿코드를 준다. 그럼 그거 복사~~
4. 검색 API 이용하기 위해 REST API 네이버에서 제공해주는 가이드 참고하기 (나는 json 방식으로 요청, items 속성으로 검색 결과가 담겨옴)
검색 > 지역
네이버 지역 서비스에 등록된 각 지역별 업체 및 상호 검색 결과를 출력해주는 REST API입니다. 비로그인 오픈 API이므로 GET으로 호출할 때 HTTP Header에 애플리케이션 등록 시 발급받은 Client ID와 Client Secret 값을 같이 전송해 주시면 활용 가능합니다.
developers.naver.com/docs/search/local/
# 서울시 구별로 맛집을 검색
seoul_gu = ["종로구", "중구", "용산구", "성동구", "광진구", "동대문구", "중랑구", "성북구", "강북구", "도봉구", "노원구", "은평구", "서대문구", "마포구", "양천구", "강서구", "구로구", "금천구", "영등포구", "동작구", "관악구", "서초구", "강남구", "송파구", "강동구"]
# 네이버 검색 API 아이디와 시크릿 키
client_id = ""
client_secret = ""
# 검색어를 전달하면 결과를 반환하는 함수
def get_naver_result(keyword):
time.sleep(0.1)
# url에 전달받은 검색어 삽입
api_url = f"https://openapi.naver.com/v1/search/local.json?query={keyword}&display=10&start=1&sort=random"
# 아이디와 시크릿 키를 부가 정보로 header에 실어 보내기
headers = {'X-Naver-Client-Id': client_id, 'X-Naver-Client-Secret': client_secret }
# 검색 결과를 data에 저장
data = requests.get(api_url, headers=headers)
# 받아온 JSON 결과를 딕셔너리로 변환
data = data.json()
return data['items']
# 저장할 전체 맛집 목록
docs = []
# 구별로 검색
# 1. 와인 (2 칵테일, 3 소주, 4 맥주 순으로 똑같이 반복 코드 짬)
for gu in seoul_gu:
# '강님구 와인', '종로구 와인 ', '용산구 와인 ' .. 반복 인코딩
keyword_wine = f'{gu} 와인'
# 맛집 리스트 받아오기
suljip_list_wine = get_naver_result(keyword_wine)
# 구별 맛집 구분선
print("*"*80 + gu)
for suljip_wine in suljip_list_wine:
# 구 정보를 추가
suljip_wine['gu'] = gu
# 맛집을 인쇄
pprint.pprint(suljip_wine)
# docs에 와인맛집을 추가
docs.append(suljip_wine)
아래처럼 나오면 성공!
insert_many로 한꺼번에 나온 검색결과 데이터들을 디비에 저장
# 맛집 정보 저장
db.suljip_wine.insert_many(docs)
db.suljip_soju.insert_many(docs)
db.suljip_beer.insert_many(docs)
db.suljip_cocktail.insert_many(docs)
'Project > 3. SULCHELIN <API>' 카테고리의 다른 글
project 3.5 Sulchelin 길찾기 API 끝 (0) | 2020.10.20 |
---|---|
project 3.4 Sulchelin 길찾기 api - 내 위치 찾는법, GeolocationPositionError code: 1 해결방법 (0) | 2020.10.13 |
project 3.3 Sulchelin 길찾기 api - 계속되는 실패 (0) | 2020.10.02 |
project 3.2 Sulchelin 처음부터 다시 크롤링, 디비저장 그리고 ajax (0) | 2020.09.26 |
project 3. matjip (To be determined) (0) | 2020.09.14 |