반응형
오늘은 저번 시간에 이어서 내용 요약 수정편입니다.
제가 만든 코드를 직접 돌려보니 문제가 하나 생겼습니다.
글 정렬은 잘되어있지만 막상 코드를 까보니 <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로 추가할 때 마다 하이퍼링크 태그 형태로 만들어서 저장 시킨 다음에 뽑아 쓰면 이렇게 나와서 조금 코드가 더러워지더라도 어쩔 수 없이 이렇게 짜보았습니다.
더 좋은 방법이 있다면 댓글로 알려주시면 수정해보도록 하겠습니다!
반응형
'Dev DBAN > 개발 이야기' 카테고리의 다른 글
파이썬으로 뉴스 크롤링을 해주는 라이브러리 - Newspaper (2) | 2021.10.01 |
---|---|
파이썬으로 네이버 카페 게시글 크롤링 (1) | 2021.06.15 |
파이썬으로 기사 요약하기 4편 - 자동 포스팅 (6) | 2021.06.07 |
파이썬으로 기사 요약하기 3편 - 메일 전송 (0) | 2021.06.04 |
파이썬으로 기사 요약하기 2편 - 요약 파일 저장 (0) | 2021.06.02 |
댓글