반응형
250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 논문리뷰
- 텍스트마이닝
- YarinGal
- 코딩테스트
- AI
- uncertainty
- VAE
- 알고리즘
- 빅데이터
- dropout
- 강화학습
- 파이썬
- 백준
- 우분투
- pandas
- Crawling
- 불확실성
- 크롤링
- 베이지안
- selenium
- bayesian
- 데이터분석
- Graph
- 텍스트분석
- pytorch
- DATA
- 리눅스
- PYTHON
- R
- GNN
Archives
- Today
- Total
끄적거림
[API] Naver 뉴스 API로 데이터 받아오기 in python 본문
728x90
반응형
[API]네이버데이터랩 api로 데이터 가져오기 in Python
[API]네이버데이터랩 api로 데이터 가져오기2 in Python
오랜만에 네이버 API 관련한 업무를 하다가 새로운 API 하게 되어 글을 쓰게 되었다.
먼저, 네이버의 API로 데이터를 받아오기 전 알아야할 주의사항이 있다.
- 검색 API를 사용
- 검색 결과로부터 최대 1000개까지의 결과만 가져옴
- 뉴스기사의 본문을 전부 가져오지는 못함. 대략 초입 3줄 정도?
- 일 최대 25,000번의 호출 가능
- 한 번 API 호출시 최대 100개의 결과값 수집 가능
- 최대로 수집해봤자 일부 중복되는 결과 발생
위의 주의사항을 먼저 알고 데이터를 수집하면 목적에 맞게 활용할 수 있을 것으로 생각한다.
1. API 신청하기
가장 먼저 할 것은 API를 신청하는 일이다.
이 작업은 기존의 포스팅에서도 다뤘기에 넘어가도록 한다.
2. Coding
import requests
import pandas as pd
import collections as co
client_id = "~~~" # 발급받은 ID
client_secret = "~~~~" # 발급받은 비번
keyword = '빅데이터'
respond_type = 'json' # json, xml
Ndisplay = 100 # 한 번 호출할 때 가져오는 뉴스 수
sort_type = 'sim' # 시간순 정렬:date, 관련도순 정렬: sim
start = 1
headers = {
'X-Naver-Client-Id' : client_id,
'X-Naver-Client-Secret':client_secret
}
우선 필요한 자원들을 설정한다.
search_word = re.sub('[^0-9a-zA-Zㄱ-힗]', ' ', keyword)
url = f"https://openapi.naver.com/v1/search/news.{encode_type}?query={search_word}&display={str(int(max_display))}&start={str(int(start))}&sort={sort}"
그리고나서, 어떤 단어에 대해 검색을 진행할지를 정한다.
이때, 검색어에 특수문자가 없는편이 검색할 때 오류날 가능성이 적기 때문에 위와 같은 전처리를 진행한다.
(참고: [문자열 다루기] 문자(한글, 영문)와 숫자만 남기고 특수문자 제거하기 in python)
후에 요청할 url을 위와 같이 설정해주면 준비는 끝난다.
r = requests.get(url, headers=headers)
if r.status_code == 200:
if len(res) == 0:
res = pd.DataFrame({
'title': [None],
'originallink': [None],
'link': [None],
'description': [None],
'pubDate': [None]
})
else:
res = pd.DataFrame(r.json()['items'])
else:
print('error with errorCode:' + r.status_code)
마지막으로, request를 날려서 결과물을 받아온다.
이때, API를 잘 활용하여 결과물을 잘 받아왔다면, 성공 코드로 200이 뜰 것이고,
무언가 에러가 나면 다른 코드가 뜰 것이다.
에러 코드는 아래와 같다
(에러코드 참고: developers.naver.com/docs/common/openapiguide/errorcode.md)
728x90
반응형
'Python > Crawling' 카테고리의 다른 글
[리뷰 크롤링] PlayStore 댓글 크롤링하기 in python 5(feat. selenium) (21) | 2021.02.05 |
---|---|
[Naver News Crawling] 네이버 뉴스 기사와 댓글 크롤링 in python(feat.selenium) (1) | 2020.11.30 |
[리뷰 크롤링] 어플 버전 history 정보 가져오기 (0) | 2020.08.04 |
[리뷰 크롤링] AppStore 어플 리뷰 가져오기 3 in python(feat.RSS) (5) | 2020.07.31 |
[리뷰 크롤링] AppStore 어플 리뷰 가져오기 2 in python(feat. cURL) (0) | 2020.07.30 |
Comments