soyeooooo 님의 블로그

[웹크롤링] openAPI 본문

python/웹 크롤링

[웹크롤링] openAPI

soyeooooo 2025. 1. 3. 19:42
# 문제1

아래 네이버 지역검색 OpenAPI를 이용하여 검색 목록을 구하시오.


네이버 OpenAPI를 이용하여 `수원대 맛집`을 검색하고 5개의 목록을 출력하시오.

제목과 지번주소를 아래 결과와 같이 출력하시오.

- 주의) 결과 정렬방식은 `업체 및 기관에 대한 카페, 블로그의 리뷰 개수 순으로 내림차순 정렬`을 사용하시오.

아래 정보를 사용하시오.

- 클라이언트아이디: krhM6JH6sLvevhNHpMpd
- 클라이언트시크릿: 6a0hkVlPRu




***결과***
```
[1] [신동랩 수원대점] 경기도 화성시 봉담읍 와우리 38-13 1층 신동랩
[2] [와우곱창] 경기도 화성시 봉담읍 와우리 62-6 1층
[3] [무공돈까스 수원대점] 경기도 화성시 봉담읍 와우리 43-3 2동 1층
[4] [포히엔] 경기도 화성시 봉담읍 와우리 43-3 2동 1층 포히엔
[5] [가장맛있는족발 수원대점] 경기도 화성시 봉담읍 와우리 38-1
```
import requests as rq
from urllib.parse import urlencode
from bs4 import BeautifulSoup

client_id = 'krhM6JH6sLvevhNHpMpd'
client_secret = '6a0hkVlPRu'
search_text = "수원대 맛집"


# 요청 데이터
data = {
    'query': search_text,
    'display': 5,
    'sort': 'comment'
}

# 요청 헤더
headers = {
    'X-Naver-Client-Id': client_id,
    'X-Naver-Client-Secret': client_secret
}

request_url = f"{api_url}?{urlencode(data)}"
res = rq.get(request_url, headers=headers)

if res.status_code == 200:
    results = res.json()['items']
    for i, item in enumerate(results, 1):
        title = BeautifulSoup(item['title'], 'html.parser').get_text()  # HTML 태그 제거
        print(f"[{i}] [{title}] {item['address']}")
else:
    print("Error Code:", res.status_code)
 
# 실습2
아래 네이버 쇼핑 OpenAPI를 이용하여 쇼핑 검색 목록을 구하시오.

5개의 쇼핑 목록을 출력하시오.( 번호, 브랜드, 제목 출력)


***결과***
```
query=%EB%9F%AC%EB%8B%9D%ED%99%94&display=5&start=1&sort=sim
[1] [77600원] [나이키] 나이키 써밋화이트 TC7900 DD9682 100
[2] [65020원] [나이키] 나이키 데이브레이크 CK2351 101
[3] [108320원] [뉴발란스] 뉴발란스 530 MR530SG
[4] [41940원] [아디다스] 아디다스 갤럭시 6 GW3848
[5] [149000원] [나이키] (국내매장판) 나이키 V2K 런 테크 서밋화이트 메탈릭실버
```
import requests
from urllib.parse import urlencode
from bs4 import BeautifulSoup

client_id = 'krhM6JH6sLvevhNHpMpd'
client_secret = '6a0hkVlPRu'
search_text = "러닝화"


# 요청 데이터
data = {
    'query': search_text,
    'display': 5,
    'start': 1,
    'sort': 'sim'
}

# 요청 헤더
headers = {
    'X-Naver-Client-Id': client_id,
    'X-Naver-Client-Secret': client_secret
}

# GET 요청 url 만들기
request_url = f"{api_url}?{urlencode(data)}"
print(urlencode(data)) # 쿼리스트링(데이터) 출력해 보기
print(request_url)

# GET 요청
res = requests.get(request_url, headers=headers)

# 목록 출력
if res.status_code == 200:
    results = res.json()['items']
    for i, item in enumerate(results, 1):
        brand = item['brand']
        title = BeautifulSoup(item['title'], 'html.parser').get_text()  # HTML 태그 제거
        print(f"[{i}] [{brand}] {title}")
else:
    print("Error Code:", res.status_code)