티스토리도 마찬가지로 여러분들의 양질의 콘텐츠들을 여러분들의 소중한 콘텐츠를 포스팅을 하셨었잖아요. 이런 것을 근데 보시면 아시겠지만 티스토리도 저품질이 빨리 오죠. 펍벤이라고 말도 하던데 구글 에드센스를 이용을 하면 저품질도 얼고 그러지 않습니까 티스토리도 양질의 포스팅을 성심껏 포스팅을 하셨다면 이것도 백업을 반드시 해야 됩니다. 저는 그렇게 믿어요. 백업을 해서 여러분만의 그런 소중한 포스팅을 많이 많이 이렇게 보관을 해놔야 돼요 우리는 티스토리 그거 하나에만 의존을 할 수는 없잖아요. 티스토리는 훌륭한 블로플랫폼입니다. 티스토리가 원래는 백업에 관련됐었던 것을 제공을 했죠. 그런데 이거를 없애버렸습니다. 그게 한 꽤 없앤 지는 됐어요. 한 최소 한 3 4년 정도는 된 것 같은데 백업 했었던 기능 자체를 없애버렸습니다. 이것에 대해서 골머리를 쌓는 분들이 있긴 한데 걱정하지 마십시오 밑에 파이썬 코딩만 돌려버리시면 모든 게 다 해결이 됩니다.
파이썬 티스토리 이미지, 텍스트 백업해보기
먼저 첫 번째 부분이 있는데 이거 첫 번째 부분은 뭐냐면 여러분의 url을 집어넣는 거예요. 여러분의 티스토리의 주소를 집어넣으면 그것에 따라서 포스팅을 가지고 옵니다. 공유 폴더가 열어놓고 여러 번의 포스팅에 숫자만큼 이미지하고 텍스트를 다 백업으로 가지고 올 거예요. 그게 하나가 처음에 있고요 두 번째는 여러분 다른 사람의 url을 집어넣어버리면 그에 걸맞춰서 제목 똑같이 이미지와 텍스트를 가져온 겁니다.
import requests
from bs4 import BeautifulSoup
from bs4 import Comment
from PIL import Image
import re
import os
def tistory_backup(post_num):
for num in range(1, post_num + 1):
try :
url = 'https://mvmv3754.tistory.com/' + str(num)
response = requests.get(url)
soup = BeautifulSoup(response.text, 'lxml')
### 포스팅 글 제목
titles = soup.select_one('#content > div.inner > div.post-cover > div > h1')
### 등록일
date = soup.select_one('#content > div.inner > div.post-cover > div > span.meta > span.date')
if not titles or not date:
continue
print(titles.text)
print(date.text)
### 포스팅 내용
entry_content = soup.find('div', {'class':'entry-content'})
print(entry_content.get_text())
res = requests.get(url)
soup_img = BeautifulSoup(res.content, 'lxml')
imgs = soup_img.select('img[src^=https]') # https 로 시작하는 src, '//'로 시작하는 src 제외시킴
print(f'이미지 수 : {len(imgs)}')
# print(imgs)
# 저장 디렉토리 만들기
if not os.path.exists('tistoryBackup'):
os.mkdir('tistoryBackup')
if not os.path.exists('tistoryBackup/post_' + str(num)):
os.makedirs('tistoryBackup/post_' + str(num))
cnt = 1
for img in imgs:
img_url = img['src']
## pillow.Image로 이미지 format 알아내기
imageObj = Image.open(requests.get(img_url, stream=True).raw)
img_format = imageObj.format
imge_size = imageObj.size
print(f'img_url: {img_url}')
print(f'img_format: {img_format}')
print(f'imge_size: {imge_size}')
print(f'os.path.basename(img_url): {os.path.basename(img_url)}')
res_img = requests.get(img_url).content
print(f'len(이미지): {len(res_img)}') # requests의 .content는 bytes 타입을 리턴함
if img_url.split('.')[-1] in ['png', 'jpg']:
img_name = str(num) + '_' + str(cnt) + '_' + os.path.basename(img_url)
else:
img_name = str(num) + '_' + str(cnt) + '_' + 'no_filename_img.' + img_format
print(img_name)
if len(res_img) > 100: # 이미지 용량이 00 bytes 이상인 것만
with open('./tistoryBackup/post_' + str(num) + '/' + img_name, 'wb') as f:
f.write(res_img)
cnt += 1
title_content = titles.text + '\n' + date.text + '\n' + entry_content.get_text()
filename = str(num) + '_tistory_title_content.txt'
with open('./tistoryBackup/post_' + str(num) + '/' + filename, 'w', encoding='utf-8') as f:
f.write(title_content)
except :
pass
tistory_backup(3) #포스팅 숫자만큼 가져옴
파이썬 티스토리 두번째 이미지, 텍스트 백업해보기
두 번째는 말 그대로 url을 집어넣으면 url에 나오는 텍스트와 이미지를 다 가지고 오는 거고 첫 번째는 주소를 집어넣으면 가지고 오는 거고 그렇게 생각하시면 될 거예요. 한마디로 첫 번째 거는 여러분의 티스토리의 url에 따른 콘텐츠를 가지고 오는 것이고 두 번째는 어떤 여러 분의 티스토리 주수 중에서 특정 url을 가지고 뭔가 가지고 오고 싶다라는 게 있으면 두 번째 걸 사용하시면 됩니다. 편하시죠 이 두 가지를 만들어 놨습니다. 그렇게 크게 달라지거나 이런 거는 없어요. 조금만 코딩만 바꾸셔서 사용해보시면 편하실 거거든요. 그렇게만 사용하시면 될 것 같네요. 어려운 내용이라 그런 거는 전혀 없습니다. 그래서 그런 것만 있다라는 것만 사용만 해주시면 될 것 같습니다.
import requests
from bs4 import BeautifulSoup
from bs4 import Comment
from PIL import Image
import re
import os
#num 수정
def extact_tistory_blog(url):
try :
#url = 'https://mvmv3754.tistory.com/3'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'lxml')
titles = soup.select_one('#content > div.inner > div.post-cover > div > h1').text ### 포스팅 글 제목
special_char = '\/:*?"<>|.'
for c in special_char:
if c in titles:
titles = titles.replace(c, '') # 특수 문자 제거
date = soup.select_one('#content > div.inner > div.post-cover > div > span.meta > span.date') ### 등록일
#if not titles or not date :
# continue
#print(titles.text)
#print(date.text)
### 포스팅 내용
entry_content = soup.find('div', {'class':'entry-content'})
#print(entry_content.get_text())
res = requests.get(url)
soup_img = BeautifulSoup(res.content, 'lxml')
imgs = soup_img.select('img[src^=https]') # https 로 시작하는 src, '//'로 시작하는 src 제외시킴
#print(f'이미지 수 : {len(imgs)}')
#print(imgs)
# 저장 디렉토리 만들기
if not os.path.exists('tistoryBackup'):
os.mkdir('tistoryBackup')
if not os.path.exists('tistoryBackup/'+str(titles)):
os.makedirs('tistoryBackup/'+str(titles))
cnt = 1
for img in imgs:
img_url = img['src']
## pillow.Image로 이미지 format 알아내기
imageObj = Image.open(requests.get(img_url, stream=True).raw)
img_format = imageObj.format
imge_size = imageObj.size
#print(f'img_url: {img_url}')
#print(f'img_format: {img_format}')
#print(f'imge_size: {imge_size}')
#print(f'os.path.basename(img_url): {os.path.basename(img_url)}')
res_img = requests.get(img_url).content
#print(f'len(이미지): {len(res_img)}') # requests의 .content는 bytes 타입을 리턴함
if img_url.split('.')[-1] in ['png', 'jpg']:
img_name = str(titles) + '_' + str(cnt) + '_' + os.path.basename(img_url)
else:
img_name = str(titles) + '_' + str(cnt) + '_' + 'no_filename_img.' + img_format
#print(img_name)
if len(res_img) > 100: # 이미지 용량이 00 bytes 이상인 것만
with open('./tistoryBackup/' + str(titles) + '/' + img_name, 'wb') as f:
f.write(res_img)
cnt += 1
title_content = str(titles) + '\n' + date.text + '\n' + entry_content.get_text()
filename = str(titles) + '_tistory_title_content.txt'
with open('./tistoryBackup/' + str(titles) + '/' + filename, 'w', encoding='utf-8') as f:
f.write(title_content)
print(str(titles) + "의 이미지, 텍스트 백업이 완료되었습니다.")
except :
print("웹페이지가 없습니다.")
'Python' 카테고리의 다른 글
[파이썬] 네이버 블로그 정규식으로 포스팅 텍스트 교정 (0) | 2022.08.12 |
---|---|
[파이썬] 인스타그램 DM 발송 자동화 (0) | 2022.08.09 |
[파이썬] 네이버 블로그 텍스트, 이미지 백업 해보기 (0) | 2022.08.08 |
[파이썬] 네이버 애널리틱스 키워드별 유입 엑셀 파일 가공 그래프 시각화 (0) | 2022.08.08 |
[파이썬] 스마트스토어 채널별 유입 엑셀 파일 가공 그래프 시각화 (0) | 2022.08.08 |
댓글