본문 바로가기
Python

[python] 티스토리 xml 백업해보기

by 퍼포먼스마케팅코더 2022. 9. 20.
반응형

python 티스토리 xml 백업해보기

 

파이썬 코딩을 통해 티스토리 본문을 xml 파일로 저장시 한글이 깨져서 나오는 오류가 발생. 아직까지 해결하지 못했음.

다만 해결 방법으로는 import xml.etree.ElementTree as ET 형식을 호출하여, 이에 해결 내용을 트리 형식으로 정리하여 넣어서 write 해주면은 저장됨. 다만 이는 xml 형식으로 저장하려고 한다면 적어도 id, title, date, category, content 등의 내용도 별도로 설정하여 넣어줘야하는 것으로 판단됨.

 

예를 들어서 data를 입력시 xml 루트는 뭘로 해야되는건지 등을 설정만 해준다면은 충분히 xml 파일로 텍스트를 만들어 보는 것도 가능할 것으로 짐작됨. 다만 워드프레스, 블로그스팟 등은 어떻게 xml 형식으로 백업 처리 되는지 등은 미리 한 번 테스트 형식으로 해봐야 될 것으로 짐작. 결론은 방법은 있으나, 아직까지 정확하게 티스토리도 백업을 해 줄 수 있는지는 굉장히 의문으로 확인됨.

 

기존 from dicttoxml2 import dicttoxml 해당 패키지를 설치하여 이용시 한글이 깨지는 현상이 나옴. 그리고 encoding과 같은 별도의 내용은 전달해주지 않음.

 

이에 xml 파일로 만드는 방법은 가능하나, 문제는 워드프레스나 다른 블로그 포맷에 맞는 xml 파일 형식을 별도로 만들어서 테스트 해봐야될 필요성이 있을 것으로 짐작됨.

 

나중에 백업 자체는 티스토리에서도 제공해 줄 것으로 보이나, 상시가 급하다면 티스토리에서 어떤 태그를 파싱을 해서 워드프레스 형식에 맞게 맵핑작업을 잘 해야되는건지가 관건. 그걸 xml 파일 형식으로 변환해서 만든다음, 그걸 워드프레스에 내보내기로 하면은 어느정도는 커버가 될 것으로 보이지만, 완전 장담까진 못함. 워드프레스도 한 번 별도 테스트가 필요하며, 또한 테스트도 해봐야됨.

 

from bs4 import BeautifulSoup
import time
from dicttoxml2 import dicttoxml #!pip install dicttoxml2 인스톨
import sys
import requests
import xml.etree.ElementTree as ET
from xml.etree.ElementTree import ElementTree, Element, SubElement, dump

base_url = 'your.tistory.com'

article_data = []

error_count = 0
error_max_count = 50

article_data = []

for index in range(1, 2) :
    u= None
    u = requests.get('https://' + base_url + '/' + str(index))
    
    b = BeautifulSoup(u.text, "html.parser")
    
    title = '테스트입니다.'
    date = '2022-09-10'
    category = '야호'
    
    article = b.find('div', {'class':'entry-content'}).get_text()
    
    #print(article)
    
    article_data.append({
        'id': index,
        'title': title,
        'date': date,
        'category': category,
        'content': str(article)
    })
    
    #print(article_data)
    
    #tree = ET.parse(str(article_data))
    #print(tree)
    
    xml = dicttoxml(article_data, custom_root='article', attr_type=False)
    print(xml)
    
    #file = open(r'C:\Users\user\raw\down\test\data.xml', 'w')
    #ile.write(str(xml))
    #file.close()
    #title = b.find('div', {'class': 'tit'})
    
    #print(xml)
   # print(b)
    
#xml = dicttoxml2.dicttoxml(some_dict)

#title = b.find('div', {'class': 'tit'}).find('a', {'class': 'link'}).contents[0].encode('utf-8')

 

반응형

댓글