본문 바로가기
Dev DBAN/개발 이야기

파이썬으로 자동 요약하기 5편 - 자동 요약mk.2

by 디반 2021. 6. 11. 10:48
반응형

오늘은 저번 시간에 이어서 내용 요약 수정편입니다. 

 

제가 만든 코드를 직접 돌려보니 문제가 하나 생겼습니다. 

글 정렬은 잘되어있지만 막상 코드를 까보니 <p></p> 하나의 문단 속에 글자만 집어 넣어져 있는 관계로 어쩔 수 없이 손코딩으로 태그들을 넣어 다시 정렬시켜 만들었습니다. 

 

import re
import feedparser
import datetime
import json
import requests

from newspaper import Article
from typing import List
from textrankr import TextRank

#게임 동아 "https://game.donga.com/feeds/rss"
#인벤 "http://feeds.feedburner.com/inven"
#게임 인사이트 "http://feeds.feedburner.com/inven"
#루리웹 "https://bbs.ruliweb.com/news/rss"
#더게임스데일리 "http://www.tgdaily.co.kr/rss/allArticle.xml"

#---------------뉴스 사이트---------------
rss_url = "http://feeds.feedburner.com/inven"
#
rss_feed = feedparser.parse(rss_url)

news_list = []
news_data = {
    "title" : "",
    "content" : "",
    "url" : ""
}

# rss feed에는 총 25개의 뉴스 기사만 보여진다.
#----------------------------------------


#-------------------- 한글 요약 클래스-------------------
#리스트형식으로 저장하기 위한 클래스 선언
class MyTokenizer:

    def __call__(self, text: str) -> List[str]:
        tokens: List[str] = text.split()
        return tokens

# 리스트 형식으로 저장하는 공간을 만들고 그 공간에 데이터들을 요약한다.
mytokenizer: MyTokenizer = MyTokenizer()
textrank: TextRank = TextRank(mytokenizer)

# 요약한 데이터는 3줄까지 가능하도록 설정하는 변수
k: int = 3

#----------------------------------------------------------



#------------------ 뉴스 요약 데이터 ---------------------
for feed in rss_feed.entries:
    # rss_feed 속 뉴스 링크 분류

    #article에 링크 속 뉴스 본문 가져와 저장한다.
    article = Article(feed.link, language = 'ko')
    article.download()
    article.parse()

    NewsTitle = article.title
    NewsFeed = article.text
    NewsUrl = article.url
    NewsTime = article.publish_date

    # 뉴스 본문들을 요약하고 k줄 만큼 요약해 str형식으로 저장한다
    summarized: str = textrank.summarize(NewsFeed, k)

    news_data["title"] = NewsTitle
    news_data["content"] = summarized
    news_data["url"] = "<A href=\""+NewsUrl+"\" target = \"blank\">"+NewsUrl +"</A>"+"<br>"

    news_content = news_data.copy()
    news_list.append(news_content)

print(news_list)


#-------------- 뉴스 요약 본 정렬 구문----------------
# MIMEText html로 보내는 것

news_list1 = str(news_list)

news_list_title = news_list1.replace("'title':", "<br><br>")
news_list_content = news_list_title.replace("'content':", "<br><br>")
news_list_url = news_list_content.replace("'url':", "<br><br>")

news_list_edit = re.sub("[]{,''}[]", '', news_list_url)

news_list_clear = news_list_edit.replace("\\n","<br>")

now_date = datetime.datetime.now()
Now_Date = now_date.strftime('%Y-%m-%d')


# -------------------티스토리 자동 업로드-----------------



url_post = "https://www.tistory.com/apis/post/write"
access_token = '티스토리 엑세스 토큰 주소'
blog_name ="https://mumin-blog.tistory.com/"
title = Now_Date + "오늘의 뉴스"
content = Now_Date +"<p>오늘의 게임뉴스[인벤]</p><br><br>"+news_list_clear

visibility = 0

category = 952628
# 본인 블로그의 카테고리 id를 확인하세요.

publish_time = ''

slogan = ''

tag = '게임,게임뉴스,게임뉴스요약,뉴스요약,게임뉴스정리,게임뉴스모음,뉴스모음'

acceptComment = 1
# 댓글허용

password = ''
# 보호글 비밀번호

headers = {'Content-Type': 'application/json; charset=utf-8'}

params = {
    'access_token': access_token,
    'output': 'json',
    'blogName': blog_name,
    'title': title,
    'content': content,
    'visibility': visibility,
    'category': category,
    'published': publish_time,
    'slogan': slogan,
    'tag': tag,
    'acceptComment':acceptComment,
    'password': password }

data = json.dumps(params)
rw = requests.post(url_post, headers=headers, data=data)



if rw.status_code == 200:
    print('ok')
else:
    print('fail')
#---------------------------------------------

 

 

리스트 속에 append로 추가할 때 마다 하이퍼링크 태그 형태로 만들어서 저장 시킨 다음에 뽑아 쓰면 이렇게 나와서 조금 코드가 더러워지더라도 어쩔 수 없이 이렇게 짜보았습니다. 

더 좋은 방법이 있다면 댓글로 알려주시면 수정해보도록 하겠습니다!

 

반응형

댓글


"); wcs_do();