개발자

티스토리 글 목록 가져오기 Open API 사용(파이선, open api)

지구빵집 2019. 12. 29. 22:15
반응형

 

  티스토리 Open API 를 사용해 티스토리 블로그 글을 csv 파일로 저장하는 방법을 설명한다. API란 “API(Application Programming Interface, 응용 프로그램 프로그래밍 인터페이스)는 응용 프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스"를 뜻한다. 그냥 상대방의 시스템을 편하게 사용할 수 있게 만든 함수라고 생각하면 된다.

 

  일단 파이선을 설치한다. 파이선 설치 사이트에서 윈도우용 파일을 받아 설치한다.

 

Welcome to Python.org

The official home of the Python Programming Language

www.python.org

파이선 프로그램을 개발할 수 있는 통합개발환경을 제공하는 파이참을 설치한다. 파이참 다운로드 사이트로 가서 Community 버전을 설치한다.

 

Download PyCharm: Python IDE for Professional Developers by JetBrains

Intelligent Python IDE with refactorings, debugger, code completion, on-the-fly code analysis and coding productivity orientation

www.jetbrains.com

 

사용자의 앱등록을 하고, 클라이언트 ID와 Secret Key 를 얻어야 한다. 오려운 일이니 아래 사이트로 이동하여 화면을 채운다. 티스토리 open API 등록 사이트

 

TISTORY

나를 표현하는 블로그를 만들어보세요.

www.tistory.com

아래와 같이 앱등록을 한다.

등록을 하고 앱관리 화면으로 이동해 설정화면에 보면 아래 모자이크 저리한 App ID 와 Secret Key가 필요한 자료다. 

우선 아래와 같은 코드를 파이참에서 실행한다. pip 명령을 사용해서 import 할 패키지를 설치해야 한다. 

 

# 티스토리 오픈API 인증

#-*- coding:utf-8 -*-
import webbrowser
import pandas as pd
import urllib.request
import json

# 1. access_token이 있는 주소를 받는다

url = "https://www.tistory.com/oauth/authorize?client_id=본인이 발급받은 Client ID&redirect_uri=https://fishpoint.tistory.com/&response_type=token"

webbrowser.open(url)

# 2. 회신받은 주소를 통해 access_token을 추출한다

result = input("input token")

temp = result.split("access_token=")[1]

access_token = temp.split("&state")[0]

print(access_token)

 

여기까지 하면 access token 을 브라우저 화면의 주소줄로 받는다. 아래 이미지 참고. 

 

 

파이참 실행화면에 input token: 글자 뒤에 사이트 주소를 복사해 준다. 복사해 넣어줄 부분은 이부분이다. access_token=7cbb##################d3e85&state= 

 

그러면 액세스 토큰을 받아 csv 파일로 글목록이 저장된다. 아래가 전체코드이다.

 

#-*- coding:utf-8 -*-

# 티스토리 오픈API 인증

import webbrowser
import pandas as pd
import urllib.request
import json

# 1. access_token이 있는 주소를 받는다

url = "https://www.tistory.com/oauth/authorize?client_id=################&redirect_uri=https://fishpoint.tistory.com/&response_type=token"

webbrowser.open(url)

# 2. 회신받은 주소를 통해 access_token을 추출한다

result = input("input token")

temp = result.split("access_token=")[1]

access_token = temp.split("&state")[0]

print(access_token)

# 받은메시지 예
# https://fishpoint.tistory.com/#access_token=######################&state=

# 글목록 가져오기
total_post = pd.DataFrame()

for i in range(1, 100):
    url2 = "https://www.tistory.com/apis/post/list?access_token=" + access_token + "&targetUrl=fishpoint&count=30&sort=id&output=json&page=" + str(
        i)

    #webbrowser.open(url2)
    #result_data = urlopen(url2)
    result_data = urllib.request.urlopen(url2)
    result = result_data.read()
    print(result)
    data = json.loads(result)

    try:
        posts = data["tistory"]["item"]["posts"]
        posts = pd.DataFrame(posts)
        total_post = pd.concat([total_post, posts])

    except Exception as e:
        print(i)
        print(data)
        print(e)
        break

total_post.reset_index(drop=True)

total_post.to_csv("toatl_post.csv")



 

여기서 중요한게 csv 파일을 엑셀에서 열면 유니코드라서 한글이 깨져나오는데 아래 사이트를 참고해서 열어야 제대로 된 파일을 얻을 수 있다. 

 

참고

티스토리API access token을 받아보자

티스토리API를 활용하여 글목록 가져오기 (오픈API, 파이썬 활용)

티스토리 글 목록 가져오기 Open API 사용

MS 엑셀(Excel)에서 UTF-8 로 된 csv 파일 가져오기

 

 

 

 

 

블로그 화면

 

 

반응형