상세 컨텐츠

본문 제목

티스토리 블로그를 워드프레스로 이전하기 위해 데이터 추출하기

2018.08.03 04:29 | 워드프레스

본문

티스토리에서 백업을 중단했기 때문에 티스토리 블로그를 워드프레스와 같은 다른 플랫폼으로 이전하기가 쉽지 않은 상황입니다.

구글을 검색해보면 다음 글에서 티스토리 데이터를 백업하여 워드프레스로 이전하는 절차를 설명하고 있습니다.

※ 아래의 과정대로 하면 PC에서 정상적으로 실행되지만 데이터가 저장되지 않습니다. 아마 쓰기 권한과 관련된 것 같습니다. 리눅스 시스템에서 아래의 과정을 수행하면 정상적으로 데이터가 저장됩니다. 자세한 방법은 아래의 "업데이트" 부분을 참고하세요.

우선 파이썬을 다운로드하여 실행하는 방법을 잠시 설명하겠습니다. 파이썬은 여러 가지 버전이 있습니다. 링크된 글에서는 스크립트가 파이썬 2.7을 기준으로 작성되었다고 합니다.

Python 버전은 2.7 버전 중 가장 최신 버전인 2.7.15를 다운로드할 수 있습니다.

설치 방법은 다음 동영상을 참고해보세요.

설치한 후에 cd c:\python27\scripts 명령을 실행한 후에 다음 명령을 실행합니다.

pip install requests

이제 링크된 글에서 제시한 py 스크립트 파일의 내용을 복사하여 적당한 이름으로 저장합니다.

base_url = 'yourblog.tistory.com'

이 부분은 적당한 블로그 url 주소로 변경합니다.

for index in range(42, 1000):

여기에서 글 ID의 범위를 지정합니다.

이제 python d:\temp\tistory_backup.py와 비슷한 형식으로 py 파일을 실행합니다.

그러면 다음과 같은 오류가 발생할 것입니다.

Traceback (most recent call last):
  File "d:\temp\tistory_backup.py", line 5, in <module>
    import BeautifulSoup
ImportError: No module named BeautifulSoup

그러면 c:\python27\scripts로 이동하여 다음 명령을 실행합니다.

pip install BeautifulSoup

이 문제에 대한 다양한 해결 방법이 제시되어 있지만 이 간단한 방법을 찾으라 제법 시간을 보냈습니다.ㅎㅎ (BeautifulSoup의 철자에 주의하세요.)

또 py 파일을 실행해보면...

ImportError: No module named dicttoxml

위와 같은 오류가 나타날 수 있습니다. 마찬가지로 c:\python27\scripts로 이동하여 다음 명령을 실행합니다.

pip install dicttoxml

다시 실행해보면 이제 다음과 같은 오류가 발생할 수도 있습니다.

Traceback (most recent call last):
  File "d:\tistory\backup\backup.py", line 65, in <module>
    article.find('div', {'style': 'width:100%;margin-top:30px;clear:both;height:
30px'}).decompose()
AttributeError: 'NoneType' object has no attribute 'decompose'

저는 그냥 문제의 라인 앞에 #을 붙여 주석처리해 보았습니다. 그러면 오류가 발생하지 않지만 제대로 하려면 이 부분을 분석하여 오류를 수정해야 할 것 같습니다.

# article.find('div', {'style': 'width:100%;margin-top:30px;clear:both;height:30px'}).decompose()

이제 다시 실행해보니 잘 실행되는 것처럼 보이다가 인코딩 오류가 발생하였습니다.

파이썬 인코딩 오류

다음과 같은 오류인데요.

UnicodeEncodeError: 'cp949' codec can't encode character u'\u2013' in position 33: illegal multibyte sequence

여기에 대해 KLDP에 관련 질문과 답변이 있습니다.

이 부분은 해당 글을 비활성화하면 문제가 발생하지 않습니다.

하지만 스크립트가 제대로 실행되어도 이미지 파일과 데이터 파일이 생성되지 않았습니다.


업데이트

PC에서 위의 작업을 하면 성공은 하지만 결과물이 없네요.ㅠㅠ

그래서 저는 Vultr에서 워드프레스 이미지를 사용했습니다. 다음 글에서 Vutlr에서 제공하는 워드프레스 이미지를 설치합니다. 이 링크를 클릭하여 Vultr에 가입하면 10달러 정도를 크레딧으로 받을 수 있기 때문에 2개월 정도는 무료로 사용이 가능합니다.

중요한 것은 Ubuntu에 Python 2.7을 설치하여 이용할 것이므로 이미지만 설치하고 SSH에 접속하여 작업하시면 됩니다.

먼저 다음 명령을 실행해봅니다.

pip install requests

그러면 무엇을 설치하라는 메시지가 표시됩니다. 메시지에 제시된 명령어를 실행하여 python-pip를 설치합니다. 그러면 Python 2.7이 설치됩니다.

다시 위의 명령을 실행합니다.

그런 다음 인용한 글에서 제시한 Python 스크립트를 원하는 곳에 저장합니다.

이제 파이썬 스크립트(py 파일) 실행 명령을 실행합니다.

그러면 마찬가지로 beautifulsoup 관련 오류가 발생합니다. 그러면 다음 명령을 실행하여 beautifulsoup 모듈을 설치합니다. (이 명령어를 알아내느라 정말 힘들었네요.ㅠㅠ)

sudo apt-get install python-beautifulsoup

그리고 dicttoxml 오류가 발생하면 https://pypi.org/project/dicttoxml/ 글에 제시된 방법에 따라 설치하면 됩니다.

이제 오류가 발생하지 않고 실행될 것입니다. 완료되면 data.xml 파일이 생성됩니다.

이제 워드프레스에서 WP All Import 플러그인을 사용하여 data.xml을 가져오기 합니다.

테마는 이 글에서 소개한 워드프레스 테마를 하나 설치해보았습니다.

티스토리 워드프레스 이전

썸네일 이미지(특성 이미지)가 적용되어 있지 않기 때문에 첫 페이지에 이미지는 표시되지 않습니다.

개별 글을 보면 콘텐츠가 잘 표시됩니다. 이미지도 잘 표시되네요.

티스토리 워드프레스 이전

참고로 비공개 글은 외부에서 접근할 수 없으므로 당연히 데이터가 추출되지 않습니다. 그리고 일부 글은 오류로 인해 제대로 데이터가 추출되지 않을 수 있지만 대부분은 백업되는 것 같습니다. 위에 설명된 방법대로 해보시면 성공하리라 생각됩니다.

작업에 성공하면 data.xml 파일과 image 폴더에 이미지들이 추출됩니다. Tistory Editor 등 티스토리 기본 에디터를 사용하지 않은 경우 이미지는 추출되지 않고 링크로 삽입됩니다.

워드프레스와 관련하여 어려움을 겪는 경우(예: 사이트 접속 불능, 멀웨어 감염 등) 여기에서 서비스(유료)를 의뢰하실 수 있습니다.


2018년 8월 15일 추가

글이 다소 혼란스러워서 쉽게 정리해야 할 것 같다는 생각이 드네요. 원 글에서 제시한 방법대로 하면서 문제가 발생하면 이 글에 제시된 방법을 적용해보면 문제가 해결될 것입니다.

참고사항:

  1. Ubuntu에 Python을 설치하여 시도했습니다.
  2. Python 스크립트를 실행하면 오류가 발생할 수 있습니다. 그런 경우 위의 "업데이트" 부분의 내용을 참고하여 문제 해결을 시도합니다.
  3. 글 범위가 1에서 10까지라면 다음과 같이 마지막 글의 ID에 1을 더한 범위로 지정합니다:
    for index in range(1, 11):
    저는 (1, 10)으로 지정하니 1에서 9까지의 글만 추출되었습니다.
  4. 워드프레스로 이전하면 티스토리의 글 ID와 워드프레스의 글 ID와 일치하게 됩니다. 그러면 다음 글을 참고하여 고유 주소를 원하는 대로 바꾸고 워드프레스 내에서 리디렉션을 설정할 수 있습니다: XE/티스토리에서 워드프레스로 이전 후 URL에 숫자가 표시되는 경우.
  5. 글 내의 첫 번째 이미지를 썸네일로 지정하려면 Quick Featured Images Pro 같은 플러그인을 사용할 수 있지만 제대로 작동하지 않을 가능성이 높습니다. 그 이유는 이미지가 별도의 폴더에 저장되어 있고, 워드프레스에서 이미지가 해당 글에 첨부된 것으로 인식하지 않기 때문입니다. 

    Add From Server 같은 플러그인을 사용하여 폴더 내의 이미지를 미디어 라이브러리에 등록시키면 첫 번째 이미지를 자동으로 특성 이미지로 지정할 수 있을 것도 같지만 테스트가 필요합니다("미디어 파일 대량 업로드하기" 및 "첫 번째 이미지를 자동으로 특성 이미지로 설정하는 방법"참고).

    (첫 번째 이미지의 경로를 별도의 필드로 저장이 가능하도록 파이썬 스크립트를 수정한다면 그 필드의 값을 특성 이미지 경로로 지정하면 문제가 쉬워질 것 같습니다.)

  6. 이미지 파일이 저장되는 경로는 임의로 지정 가능합니다. 티스토리의 공감, 공유, 신고 아이콘 부분도 함께 이전되네요. 저는 임시 방편으로 CSS로 숨겼습니다. DB에서나 다른 방법으로 일괄 삭제하는 방법을 시도하면 좋을 듯 합니다. jQuery나 javascript로 제거하는 것도 한 방법이지만 사이트 속도에 영향을 최소화하는 방법을 강구하면 좋을 듯 합니다.

    .container_postbtn {
        display: none;
    }
  7. 워드프레스로 이전하려는 경우 먼저 웹호스팅에 가입하고 도메인을 연결한 후에 워드프레스를 설치해야 합니다. 기본적인 워드프레스 사용 방법은 "워드프레스 블로그 시작하기"를 참고해보시기 바랍니다.
  8. Tistory Editor 프로그램이나 구글 포트 등을 사용하여 이미지를 삽입한 경우에는 이미지를 추출할 수 없고, 링크로 이미지가 삽입됩니다.

2018년 9월 26일 추가: 지난달에 이 방법을 통해 8월 16일 이전의 모든 글을 테스트로 워드프레스 사이트로 이전해보았습니다. 이틀 전 추석날에 이 블로그의 모든 글이 '블로그' 탭에서 '웹사이트' 탭으로 이동하면서 네이버 유입이 제로가 되었습니다. 당분간 추이를 살펴보고, 네이버 유입이 회복이 안 되면 워드프레스로 완전히 이전하는 것도 고려해볼 생각입니다.

참고:

※일부 글에 제휴 링크가 포함될 수 있습니다.

댓글 영역

  • 프로필 사진
    2018.08.03 04:34 신고
    백업기능이 없으니 데이터를 추출하는 기능을 만드셨군요.
    저는 오류에 대해서 잘 모르지만 추후 완벽해지길 기대해봅니다.!
    • 프로필 사진
      2018.08.03 04:35 신고
      제가 만든 것은 아니고, 실력 있는 분이 만든 스크립트가 있습니다.

      본문에 설명되어 있듯이 해당 방법이 공개되어 있습니다.

      그것을 실행하려고 하니 제대로 작동을 하지 않네요.ㅠㅠ
  • 프로필 사진
    2018.08.03 05:39 신고
    우와..어렵네요..결국 이전하시는군요..
    • 프로필 사진
      2018.08.03 07:51 신고
      아직 이전은 고려하고 있지 않습니다.

      만약의 경우를 대비하여 데이터 백업을 받을 수 있는 방법을 찾고 있습니다. 파이썬이라는 언어는 전혀 몰라서 쉽지 않네요.
  • 프로필 사진
    2018.08.03 09:14 신고
    성공하시면 다시 자세하게 포스팅 부탁드립니다 ㅎ
    • 프로필 사진
      2018.08.03 10:09 신고
      네. 성공하면 이 글에 이어서 포스팅하도록 노력하겠습니다.

      하지만 파이썬이라는 언어에 대해 아는 것이 없어 어려움이 많네요. 하나 해결하면 또 문제가 발생하고...ㅠㅠ 성공할 수 있을지 모르겠네요.
    • 프로필 사진
      2018.08.03 18:01 신고
      글을 업데이트했습니다.

      초보자에게는 조금 어려울 수 있을 것 같습니다.
  • 프로필 사진
    2018.08.03 17:32 신고
    이거 성공하시면, 부업으로 서비스 하셔도 될것 같은데요? 화이팅!!!
    • 프로필 사진
      2018.08.03 18:01 신고
      다시 테스트하여 성공했습니다.ㅎㅎ

      리눅스 시스템에서 실행하면 제대로 되네요.

      PC에서 실행하면 문제 없이 실행되지만 파일이 저장되지 않네요.
    • 프로필 사진
      2018.08.03 18:35 신고
      오! 축하드립니다!!!!
    • 프로필 사진
      2018.08.03 19:04 신고
      전문가가 보면 정말 아무 것도 아닌 것이지만, 파이썬에 대해서는 전혀 모르는 상태에서는 쉽지 않은 도전이네요.

      그래도 시간을 투자한만큼 성과는 있어서 다행이라 생각됩니다.ㅎㅎ
  • 프로필 사진
    2019.03.15 11:21 신고
    카페24 호스팅 기간이 끝나면 블루 호스트로 옮겨 티스토리 까지 함께 서브도메인으로 묶을까 합니다.
    그런데 읽어봐도 하나도 모르겠네요. ㅠㅠ
    • 프로필 사진
      2019.03.15 12:02 신고
      네. 초보자들이 따라하기에는 쉽지 않은 것 같습니다. 원하시면 제가 Vultr라는 곳에서 테스트 서버를 하나 만들어서 데이터를 추출해드리겠습니다.ㅎㅎ (추출한 후에 테스트 서버를 삭제하면 됩니다.)

      티스토리 이전하는 방법에 대한 자세한 글을 하나 작성하여 초보자도 쉽게 이전할 수 있도록 하고 싶지만, 데이터를 추출하는 방법을 따라하기가 어려울 것 같습니다.

      블루호스트(https://www.thewordcracker.com/go/bluehost )에서는 와일드카드 SSL 인증서를 제공하지 않으므로 서브도메인에 대하여 ssl 인증서를 설치할 수 없습니다. (카페2*의 경우 와일드카드 SSL 인증서를 1년에 462000원에 파매합니다.ㅎㅎ) 또 서브도메인으로 운영하면 본래 도메인과는 완전히 다른 도메인으로 인식하기 때문에 SEO상으로 별로 안 좋은 것 같습니다.

      그냥 /blog라는 하위 폴더를 만들고 그곳으로 이전하시면 SEO상으로도 좋을 수 있습니다.


      www.example.com을 메인으로 운영하고, www.example.com/blog를 티스트로 블로그 콘텐츠를 이전하여 운영할 수 있습니다.

      가령, 제 메인 블로그 https://www.thewordcracker.com/ 은 구글에 검색이 잘 됩니다. 만약 https://www.thewordcracker.com/blog로 별도의 블로그를 운영하면 구글에서는 같은 사이트로 인식합니다.

      하지만 https://blog.thewordcracker.com/ 서브도메인은 완전히 다른 사이트로 인식하여 검색 엔진 노출에서 메인 블로그의 혜택을 누리지 못합니다.
  • 프로필 사진
    2019.03.15 12:05 신고
    와! 감사합니다. ^^
    그런데 하위폴더를 만들어 이전하면 최신글이 뜨게 된 원래 블로그 메인 화면에 새 글이 노출 되나요? 안나왔으면 해서요.
    • 프로필 사진
      2019.03.15 12:14 신고
      워드프레스를 하위 폴더에 설치하면 완전히 별개로 운영하게 됩니다.

      예시:
      https://www.thewordcracker.com/
      vs
      https://www.thewordcracker.com/en-us/

      저는 영문 버전을 /en-us/ 폴더에 설치하여 완전히 별개로 운영하고 있습니다. 별개의 워드프레스 사이트이므로 테마 등을 완전히 다르게 해도 되고, 저처럼 비슷하게 해도 됩니다.
    • 프로필 사진
      2019.03.15 13:08 신고
      오 그렇군요! 감사합니다. ^^