카카오 API 사용해서 웹스크래핑 해보기
네이버 만큼 친절하진 않았지만...
그렇다! 우린 카카오 검색 api 를 사용해서 웹스크래핑을 할 수 있다!
위의 사이트에 가면 친절하게 api 사용이 가능하다. 데이터 사용 제한도 막 걸려있지 않는듯 하다.(?)
다들 kakao 아이디는 있을테니... 그거로 하시면 된다.
내 애플리케이션 들어가서 간단하게 애플리케이션 만든다.
그럼 저렇게 앱 키가 나오는데 우리가 사용할 것은 REST API키다.왜냐면 검색 도구가 저걸 사용해야하기 때문!!!
REST API | Kakao Developers 문서
여기 들어가면 파라미터 바꿔서 결과값도 볼 수 있다.
참고로 바꾸고 싶은것들은 이 문서를 보고 직접 바꾸면서 진행하면 된다. 재밌다 나름.
그래서 파이썬으로 어떻게 사용하는데!!!
카카오는 네이버와 다르게 파이썬으로 어떻게 써야하는지... 나와있지 않다.
그래서 조금 구글링을 해봤는데 열심히 정리하신 분들이 있더라
https://foss4g.tistory.com/1412
요기 두개 블로그를 참조했다.
import requests
import json
url = "https://dapi.kakao.com/v2/search/blog" #kakaoapi 사용하여 blog 검색
queryString = {'query' : 'coffee' } #내가 원하는 검색어
header = {'Authorization': 'api 키'}
response = requests.get(url, headers=header, params=queryString) #위의 값들 가져와서 요청 -> 반응
tokens = response.json()
print(response)
print(tokens)
참고로 api 키는 'KakaoAK ~api키' 이런식으로 쓰면된다. ex) 'KakaoAK 1234123142332141'
위의 코드를 수행하면 내가원하는 query에 대한 여러 정보들을 가져온다.
url 끝에 blog를 바꾸면 카페, 웹문서, 책 등... 원하는 정보를 가져온다.
여러 정보들이 도출되는데 대표적으로... title이나 link , 요약 content를 가져온다.
나는 title과 link를 왕창 가져오고 싶었다.
다음 코드도 위의 블로그 중에서 가져온건데 조금 더 세심하게 뽑을 수 있다.
위의 코드를 보고 구조를 파악한 후에, 아래 코드로 뽑아보는걸 추천한다.
import requests
from urllib.parse import urlparse
# 최대 사이즈 50개
def kakao_api(keyword, page):
url ='https://dapi.kakao.com/v2/search/blog?&query=' + keyword + '&size=50'+ '&page=' + str(page)
result = requests.get(urlparse(url).geturl(),
headers={'Authorization':'KakaoAK -'})
json_obj = result.json()
return json_obj
blog_list=[]; keyword = '닌텐도'; page = 1 # 1페이지 부터 시작
while page <=50: # 최대 50페이지 (최대 총 50page*50size)
json_obj = kakao_api(keyword, page)
# 필요한 데이터만 골라서 수집(타이틀과 링크)
for document in json_obj['documents']:
#타이틀의 특수문자 제거
val = [document['title'].replace('<b>','').replace('</b>','').replace(''','').replace('&','').replace('=',''),
document['url']]
blog_list.append(val)
# 마지막으로 데이터를 뽑을 수 있는 곳까지 반복
if json_obj['meta']['is_end'] is True: break
page += 1
# 리스트를 텍스트 데이터로 전환
text_list = []
for item in blog_list:
text_list.extend(item)
text = ' '.join(text_list)
print(text)
코드 중간에 val 부분에 문서를 참조하고 원하는 결과값을 추가, 제거 해도 된다.
참고로 나는 title과 link만 도출했으며
사실상 요약 contents는 그다지 필요없는게... 뽑으려고 했던 토픽이 포함된 문장이 1줄 정도 나온다.
그래서 이제 할 일!
정규표현식으로 네이버 블로그,tistory의 결과만 뽑는다.
(저 둘을 제외한 나머지는 웹스크래핑 할 때 형식이 정해져 있지 않아 불편함만 준다.)
이후, 저기서 뽑은 link에서 html을 확인하고 정적,동적 웹스크래핑을 하면 원하는 정보를 왕창~ 가져올 수 있다.
네이버 블로그는 셀레니움으로, tistory의 경우 정적 스크래핑으로 충분히 가져와 지더라... (네이버는 살짝 복잡)
다음에 시간적으로 여유가 될때... 다음 편을 올려보도록 하겠다...
흑흑 너무 바쁘다.
뭐 사실상 카카오api 사용은 여기까지긴하다! 다음은 활용인것이지...
'데이터사이언스 대학원 생활 > TextAnalytics' 카테고리의 다른 글
파이썬 유튜브(Youtube)API 활용 /원하는 키워드 영상 댓글 추출 (0) | 2023.07.14 |
---|---|
파이썬 카카오 검색 API 활용 웹스크래핑(3) (0) | 2023.07.13 |
파이썬 카카오 검색 API 활용 웹스크래핑(2) (0) | 2023.06.13 |
Selenium 설치 방법 (0) | 2023.03.20 |
정규 표현식(Regular Expression) (0) | 2023.03.14 |