2023. 4. 18. 15:53ㆍLanguage/Python
네이버 쇼핑 검색 api 크롤링
import requests # 임포트
import pprint 
client_id = 'xxxxxx' # 본인 네이버 Client ID사용
client_secret = 'xxx' # 본인 Client Secret사용
naver_open_api = ' https://openapi.naver.com/v1/search/shop.json?query=갤럭시노트10'
header_params = {"X-Naver-Client-Id":client_id, "X-Naver-Client-Secret":client_secret} 
res = requests.get(naver_open_api, headers=header_params) 
if res.status_code == 200: # status code 가 200일 때 아래코드 실행
    data = res.json() 
    for index, item in enumerate(data['items']): 
        print (index + 1, item['title'], item['link']) 
else: # status code 가 200 아니면 에러코드 실행
    print ("Error Code:", res.status_code)
1 삼성 <b>갤럭시 노트10</b> 256GB 정품 자급제 SM-N970 https://search.shopping.naver.com/gate.nhn?id=36567812649
2 삼성전자 <b>갤럭시노트10</b> 256GB [SKT] https://search.shopping.naver.com/gate.nhn?id=20552943544
3 삼성 <b>갤럭시노트10</b> 플러스 256GB 공기계-<b>갤럭시노트10</b>플러스 256GB https://search.shopping.naver.com/gate.nhn?id=36758337937
4 [중고]삼성 <b>갤럭시 노트10</b> (256GB) 공기계 무약정 https://search.shopping.naver.com/gate.nhn?id=39080420828
5 자급제통신사공용 삼성 <b>갤럭시 노트10</b>+ 5G 256G C급 https://search.shopping.naver.com/gate.nhn?id=38275466585
6 삼성 <b>갤럭시노트10</b>플러스 <b>GalaxyNote10</b>+ 5G 256G/512G https://search.shopping.naver.com/gate.nhn?id=36881504601
7 <b>갤럭시 노트10</b> 플러스 5G 256GB 공기계-<b>갤럭시노트10</b>플러스 256G https://search.shopping.naver.com/gate.nhn?id=38152829471
8 삼성전자 <b>갤럭시노트10</b> 5G 256GB https://search.shopping.naver.com/gate.nhn?id=85393629281
9 삼성전자 삼성 <b>갤럭시 노트10</b> 256GB 정품 자급제 SM-N970 https://search.shopping.naver.com/gate.nhn?id=36567620602
10 <b>갤럭시 노트10</b> 플러스 5G 256GB 공기계 https://search.shopping.naver.com/gate.nhn?id=38152873354
네이버 쇼핑 검색 api 크롤링 활용 하여 엑셀에 넣기
import requests 
import openpyxl 
client_id = 'xxxxxx' # 본인 네이버 Client ID사용
client_secret = 'xxx' # 본인 Client Secret사용
start, num = 1, 0 
excel_file = openpyxl.Workbook() 
excel_sheet = excel_file.active 
excel_sheet.column_dimensions['B'].width = 100 
excel_sheet.column_dimensions['C'].width = 100 
excel_sheet.append(['랭킹', '제목', '링크']) 
for index in range(10): 
    start_number = start + (index * 100) 
    naver_open_api = ' https://openapi.naver.com/v1/search/shop.json?query=애플&display=100&start=' + str(start_number) 
    header_params = {"X-Naver-Client-Id":client_id, "X-Naver-Client-Secret":client_secret} 
    res = requests.get(naver_open_api, headers=header_params) 
    if res.status_code == 200: 
        data = res.json() # 가져온 데이터를 json 형식으로 변경
        for item in data['items']: 
            num += 1 
            excel_sheet.append([num, item['title'], item['link']]) 
    else: 
        print ("Error Code:", res.status_code) 
excel_file.save('IT.xlsx') 
excel_file.close()

공공API 활용하여 대기오염 지수 크롤링
https://www.data.go.kr/data/15073861/openapi.do 에서

활용 신청후


요청 url 생성
http://apis.data.go.kr/B552584/ArpltnInforInqireSvc/getCtprvnRltmMesureDnsty?serviceKey=본인 서비스 키&returnType=json&numOfRows=1&pageNo=1&sidoName=서울&ver=1.0
{
    "response": {
        "body": {
            "totalCount": 40,
            "items": [
                {
                    "so2Grade": "1",
                    "coFlag": null,
                    "khaiValue": "42",
                    "so2Value": "0.002",
                    "coValue": "0.3",
                    "pm10Flag": null,
                    "o3Grade": "1",
                    "pm10Value": "16",
                    "khaiGrade": "1",
                    "sidoName": "서울",
                    "no2Flag": null,
                    "no2Grade": "1",
                    "o3Flag": null,
                    "so2Flag": null,
                    "dataTime": "2023-04-20 15:00",
                    "coGrade": "1",
                    "no2Value": "0.019",
                    "stationName": "중구",
                    "pm10Grade": "1",
                    "o3Value": "0.025"
                }
            ],
            "pageNo": 1,
            "numOfRows": 1
        },
        "header": {
            "resultMsg": "NORMAL_CODE",
            "resultCode": "00"
        }
    }
}
Python 코드로 변환
import requests 
import pprint 
service_key = 본인 서비스 키
params = '&returnType=json&numOfRows=1&pageNo=1&sidoName=서울&ver=1.0' 
open_api = ' http://apis.data.go.kr/B552584/ArpltnInforInqireSvc/getCtprvnRltmMesureDnsty?serviceKey=' + service_key + params 
res = requests.get(open_api) 
pprint.pprint(res.text)
('{"response":{"body":{"totalCount":40,"items":[{"so2Grade":"1","coFlag":null,"khaiValue":"42","so2Value":"0.002","coValue":"0.3","pm25Flag":null,"pm10Flag":null,"o3Grade":"1","pm10Value":"16","khaiGrade":"1","pm25Value":"11","sidoName":"서울","no2Flag":null,"no2Grade":"1","o3Flag":null,"pm25Grade":"1","so2Flag":null,"dataTime":"2023-04-20 '
 '15:00","coGrade":"1","no2Value":"0.019","stationName":"중구","pm10Grade":"1","o3Value":"0.025"}],"pageNo":1,"numOfRows":1},"header":{"resultMsg":"NORMAL_CODE","resultCode":"00"}}}')
'Language > Python' 카테고리의 다른 글
| [Python] tensorflow 머신러닝 - 선형 회귀 (0) | 2023.05.08 | 
|---|---|
| [Python] 크롤링 엑셀 파일 만들기 (0) | 2023.04.17 | 
| [Python] 크롤링 패턴 실습 (0) | 2023.04.11 | 
| [Python] 객체와 라이브러리 (0) | 2023.04.11 | 
| [Python] jupyter notebook 기본 사용법 Python 문법 (0) | 2023.03.31 |