반응형
보안뉴스 웹크롤링을 완료했습니다. 파이썬을 이용하였으며 주요 기능은 오늘의 날짜를 기준으로 올라온 기사의 제목을 찾아 나열하며, 이번 주의 인기뉴스를 알려주며 원하는 기사를 검색할 수 있는 프로그램입니다.
보안뉴스는 2020.8.12일 기준으로는 웹 크롤링이 가능한 것을 알립니다.
또한, 제가 만든 프로그램은 오직 BeautifulSoup를 이용하여 만든 것이므로 많이 부족할 수 있다는 점 양해 바랍니다.
<소스코드>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
|
import datetime
from bs4 import BeautifulSoup as bs
import urllib.request as req
import urllib
def Main_Menu() :
print()
print("--------메뉴선택--------")
print("\t1. 오늘의 주요 기사는?")
print("\t2. 주간의 인기 뉴스")
print("\t3. 기사 검색하기")
print("\t0. 종료하기")
print("----------------------")
def Today_Main_Post() :
today = datetime.datetime.today()
today_date = today.strftime("%Y-%m\\%d.")
today_date = str(today_date).replace("-","년").replace("\\","월").replace(".","일")
dates= []
titles=[]
url = "https://www.boannews.com/media/t_list.asp"
res = req.urlopen(url)
soup = bs( res , "html.parser" )
today_main_posts_title = soup.find_all("span",class_="news_txt")
today_main_posts_dates = soup.select(" div.news_list > span.news_writer")
tmp = today_main_posts_dates
for ls in tmp :
today_main_posts_dates = ls.string
dates.append(today_main_posts_dates.split("|")[1])
tmp = today_main_posts_title
for ls in tmp :
today_main_posts_title = ls.string
titles.append(today_main_posts_title)
i = 0
for ls in dates :
dates[i] = dates[i].replace(" ","")
i += 1
i = 0
boolean = True
while boolean :
if str(dates[i][0:11]) == today_date :
print("#%d >>"%(i+1),titles[i])
else :
boolean = False
i += 1
def Week_Hit_News() :
url = "https://www.boannews.com/media/o_list.asp"
res = req.urlopen(url)
soup = bs(res,"html.parser")
Hit_News_List = soup.select("#main_HitNews > ul > li > a ")
i = 1
for ls in Hit_News_List :
Hit_List = ls.string
print("#%d >>"%i,Hit_List)
i+=1
def Search_Article(name_article) :
name_article_euc = name_article.encode("euc-kr")
name_article_euc_kr = str(name_article_euc)
name_article_euc_kr = name_article_euc_kr.replace("\\x","%").replace("b","").replace("\'", "")
name_article_euc = urllib.parse.quote(name_article_euc)
url = "https://www.boannews.com/search/news_list.asp?search=key_word&find="+name_article_euc
res = req.urlopen(url)
soup = bs(res,"html.parser")
searching_news_title = soup.select("#news_area > div > a")
i = 1
for ls in searching_news_title :
News_title = ls.string
if i >10 :
continue
elif News_title == None :
continue
else :
print("#%d >>"%i,News_title)
i+=1
while True :
Main_Menu()
menu_num = input("입력 : ")
input_article = ""
if int(menu_num) == 1 :
Today_Main_Post()
elif int(menu_num) == 2 :
Week_Hit_News()
elif int(menu_num) == 3:
input_article = input("찾을 기사 제목 : ")
Search_Article(input_article)
elif int(menu_num) == 0 :
break
|
cs |
기능 1 :메뉴 1번으로 그날의 날짜에 올라온 기사의 제목들을 나열하는 기능입니다.
기능 2 : 인기뉴스를 순서대로 나열하는 기능입니다.
기능 3 : 원하는 기사를 키워드를 입력해 검색하는 기능입니다.
반응형
'프로젝트' 카테고리의 다른 글
코틀린 안드로이드 가계부앱 - 1 (0) | 2024.12.13 |
---|---|
보안뉴스 웹크롤링(8) (0) | 2020.08.09 |
보안뉴스 웹크롤링(7) (0) | 2020.08.08 |
보안뉴스 웹크롤링(6) (0) | 2020.08.07 |