웹페이지 운영/워드프레스

워드프레스 글 목록을 파이썬으로 가져오는 방법

공무원 봉급 2022. 5. 21. 02:37

블로그 자동화를 구현하는 방법에는 여러가지가 있겠습니다. 그 중에서도 워드프레스의 API를 이용하는 방법은 아주 빠르면서도 깔끔하게 블로그 자동화를 구축할 수 있는 방법입니다. 

 

1. 글의 목적

본 페이지에서는 워드프레스의 글 목록을 파이썬으로 가져오는 방법에 대해서 설명을 드리고, 간단한 파이썬 예제들을 제공합니다. 

 

2. 필요한 사전 작업

본 글에서 설명하는 워드프레스 API를 실제로 실행하려면 아래 사항들이 준비되어 있어야 합니다. 

 

2.1 워드프레스가 설치되어 있어야 합니다. 

워드프레스를 통해서 API를 호출하기 위해서는 당연히 워드프레스가 설치되어 있어야 합니다. 아래 글을 참고하셔서 웹서버를 구성하시거나 클라우드 서비스를 생성하시기 바랍니다.

우분투 리눅스에 워드프레스 설치 방법

 

우분투 리눅스에 워드프레스 설치 방법 - 개발을 위한 나의 투쟁

본 페이지에서는 우분투 리눅스에 워드프레스를 설치하는 방법에 대해서 설명합니다. 1. 워드프레스란? 필자는 네이버 블로그, 티스토리 블로그, 깃헙 페이지스(GitHub Pages) 등의 블로그를 운영하

www.dhqhrtnwl.shop

 

2.2 워드프레스 XML-RPC가 활성화 되어 있어야 합니다.

파이썬을 이용해서 워드프레스의 API를 호출하기 위해서는 XML-RPC가 활성화되어 있어야 합니다. 아래 글을 참고하셔서 워드프레스 웹페이지에서 XML-RPC를 사용할 수 있도록 활성화 시켜야 합니다. 

2022.05.20 - [웹서버/워드프레스] - 워드프레스 API 실행을 위해서 xmlrpc 활성화 시키는 방법

 

워드프레스 API 실행을 위해서 xmlrpc 활성화 시키는 방법

네이버 블로그나 티스토리 블로그와는 달리, 워드프레스는 각종 API들을 제공합니다. 워드프레스의 API를 통해서 웹페이지나 블로그를 자동화시킬 수 있습니다. 이런 API는 상당히 강력한 기능이

worldclassproduct.tistory.com

 

2.3 파이썬 패키지 설치

파이썬으로 API를 호출할 것이기 때문에 당연히 파이썬 설치가 필요합니다. 또한 python-wordpress-xmlrpc 패키지도 추가 설치가 필요합니다. 자세한 내용은 아래의 페이지를 살펴보시기 바랍니다. 

https://boyinblue.github.io/004_python/008-python-wordpress-update.html

 

파이썬으로 워드프레스 글 자동 발행하기

파이썬으로 워드프레스 글을 자동 발행하는 방법에 대해서 설명합니다.

boyinblue.github.io

 

3. 파이썬으로 글 목록을 가져오는 방법

우리는 파이썬을 이용해서 글 목록을 가져오는 예제를 살펴볼 예정입니다. 그에 앞서서 워드프레스에서 제공하는 API reference 페이지를 살펴보는 것도 좋습니다. 어떤 method들이 있는지, API 호출시에 어떤 파라미터들을 입력해주는지, 어떤 응답이 오는지에 대해서 잘 이해할 수 있습니다. 

https://developer.wordpress.org/reference/

 

WordPress Developer Resources | Official WordPress Developer Resources

Official WordPress developer resources including a code reference, handbooks (for APIs, plugin and theme development, block editor), and more.

developer.wordpress.org

 

파이썬으로 글 목록을 가져오는 방법은 여러가지 방법이 있겠지만, 가장 먼저 getPosts() 메소드 호출을 통해서 글 목록들의 리스트를 가져온 다음, getPost() 메소드를 호출해서 개별 글을 가져오는 방법이 있겠습니다. 메쏘드 명에서도 알 수 있듯이, getPosts() 메소드를 호출하면 복수개의 포스트들이 리스트 형태로 리턴되고 getPost() 메소드를 호출하면 하나의 포스트만 리턴이 됩니다. 

 

3.1 getPosts() 메쏘드로 복수 포스트를 가져오는 예제

getPosts() 메쏘드를 호출하면 복수개의 포스트를 리스트 형태로 가져오게 됩니다. 별도로 개수를 지정하지 않으면 10개의 글이 한 번에 리턴됩니다. 

#!/usr/bin/python3

from wordpress_xmlrpc import Client
from wordpress_xmlrpc.methods import posts

def getPosts(url, id, pw):
  url = url + "/xmlrpc.php"
#  print("id :", id)
#  print("pw :", pw)
#  print("url :", url)

  client = Client(url, id, pw) 

  ids = []

  postList = client.call(posts.GetPosts())
  for post in postList:
#    print("ID :", post.id)
    ids.append(post.id)

  return ids

위의 함수를 작성한 후 url, id, password 인자를 넣어서 호출해주면 됩니다. url은 "https://www.webpage.com" 등과 같이 작성해주시면 됩니다. 

 

실행 결과를 살펴보면 아래와 같이 글 번호가  출력됩니다. 

$ ./getPosts.py 
Posts : ['237', '233', '235', '231', '229', '227', '225', '223', '221', '217']

 

3.2 getPost() 메쏘드로 복수 포스트를 가져오는 예제

getPost() 메쏘드를 호출하면 해당하는 글 번호를 가진 포스트를 하나만 가져오게 됩니다. 

#!/usr/bin/python3

from wordpress_xmlrpc import Client
from wordpress_xmlrpc.methods import posts

def getPost(url, id, pw, post_id):
  url = url + "/xmlrpc.php"
#  print("id :", id)
#  print("pw :", pw)
#  print("url :", url)
#  print("post id :", post_id)

  client = Client(url, id, pw) 

  post = client.call(posts.GetPost(post_id))

  return post

인자로 넣어주는 값에는 기존의 url, id, password 외에 post_id가 추가됩니다. 예를들어 297번 글을 읽어오고 싶다면 getPost(url, id, password, 297)을 인자로 실어서 호출하시면 됩니다. 

 

리턴된 글 정보를 아래와 같은 형식으로 출력도 가능합니다. 

if __name__ == '__main__':
  auths = [ 'www.webpage.com', 'id', 'pw' ]

  import sys 
  if len(sys.argv) <= 1:
    print("Please input specific post id")
    exit(0)

  for i in range(1, len(sys.argv)):
    print("Get Post", sys.argv[i])
    post = getPost(auths[0], auths[1], auths[2], sys.argv[i])

    print("id :", post.id)
    print("user :", post.user)
    print("date :", post.date)
    print("title :", post.title)
    print("slug :", post.slug)

 

실행하면 아래와 같이 글의 번호, 작성자, 작성 날짜, 제목, 슬러그 등의 정보를 확인하실 수 있습니다. 

$ ./getPost.py 237
Get Post 237
id : 237
user : 1
date : 2022-05-20 10:39:24
title : [이벤트 정보] CU 모바일 상품권 5천원권  (~2022-05-24 )
slug : %ec%9d%b4%eb%b2%a4%ed%8a%b8%ec%a0%95%eb%b3%b4

 

이상으로 워드프레스의 글 목록을 가져오는 파이썬 예제에 대한 설명을 모두 마칩니다.