기사를 크롤링하여 mysql에 넣어보자 :)¶
아래 글중에 조선일보 기사를 크롤링하여 워드 클라우드를 했던 글이 있습니다. 해당글의 크롤링 코드들을 이용하여 크롤링한 기사들을 제목과 내용으로 구분지어 바로 mysql로 넣어보겠습니다.
In [1]:
from urllib.request import urlopen
from bs4 import BeautifulSoup
In [2]:
import nltk
import re
In [62]:
url_base="http://news.chosun.com/site/data/html_dir/2019/12/02/20191202"
last='.html'
title=[]
news_list=[]
for i in range(3000):
index=str(i)
if len(index)==1:
index='0000'+index
elif len(index)==2:
index='000'+index
elif len(index)==3:
index='00'+index
else:
insex='0'+index
try:
page=urlopen(url_base+index+last)
soup = BeautifulSoup(page, 'html.parser')
title.append(soup.find('h1').get_text())
news_list.append(soup.find_all(id="news_body_id",itemprop="articleBody")[0].get_text())
except:
pass
In [64]:
title[100]
Out[64]:
In [63]:
news_list[100]
Out[63]:
In [51]:
for i in range(len(news_list)):
news_list[i] = re.sub('입력\s[0-9,\W]*\n','',news_list[i]) #'입력'으로 시작~new line까지의 문자열 삭제
news_list[i] = re.sub('좋아요[\W,\w]*','',news_list[i]) # 좋아요 뒤로 모두 삭제
news_list[i] = re.sub('[○|\n]','',news_list[i]) # 동그라미, <사진>, new line 삭제
news_list[i] = re.sub('<사진>','',news_list[i])
news_list[i] = re.sub('\s\W*=기자\s[\w,\W]*[.]com','',news_list[i])
news_list[i] = re.sub('\W*=기자\s[\w,\W]*[.]com','',news_list[i])
news_list[i] = re.sub('[\w,\W]*\s기자]','',news_list[i]) #~~~기자] 로 된 문자열 삭제
news_list[i] = re.sub('/\s[\W,\w]*co.kr','',news_list[i]) # ~로 시작~co.kr 끝나는 문자 삭제
news_list[i] = re.sub('/[\W,\w]*co.kr','',news_list[i]) # /로 시작~co.kr 끝나는 문자 삭제
news_list[i] = re.sub('▲\s[\W,\w]*','',news_list[i]) #세모뒤로 다 삭제
news_list[i] = re.sub("\\xa0",'',news_list[i]) #\xa0뒤로 모두 삭제
news_list[i] = re.sub('/\W*@[\W,\w]*','',news_list[i]) #이메일 주소 뒤의 문자열 모두 삭제
news_list[i] = re.sub(r'\[사진\]\s[\w,\W,\s]*','',news_list[i]) #[] 뒤로 문자 없애줌
news_list[i] = re.sub('수정\s[0-9,\W]*\r','',news_list[i]) #'수정'으로 시작~\r까지의 문자열 삭제
news_list[i] = re.sub('\s\w*=\w*\s기자\s[\w,\W]*','',news_list[i])
news_list[i] = re.sub('[-=+,#/\?:^$.@*\"※~&%ㆍ!』\\‘|\(\)\[\]\<\>`\'…》“”’]','',news_list[i])
news_list[i] = re.sub("'구해줘홈즈' 의뢰인, 최종매물 외 '복팀' 테라스 원룸 선택→'",'',news_list[i])
title[i] = re.sub('입력\s[0-9,\W]*\n','',title[i])
title[i] = re.sub('\s\W*=기자\s[\w,\W]*[.]com','',title[i])
title[i] = re.sub('[-=+,#/\?:^$.@*\"※~&%ㆍ!』\\‘|\(\)\[\]\<\>`\'…》“”’]','',title[i])
In [54]:
news_list[100]
Out[54]:
In [56]:
import pymysql
from openpyxl import Workbook
from openpyxl import load_workbook
In [57]:
conn = pymysql.connect(host='localhost', user='root', password='dnjstlr1', db='study_db', charset='utf8')
In [58]:
sql = '''
CREATE TABLE josun1202 (
title mediumtext,
news_list LONGTEXT
)
'''
In [59]:
cursor=conn.cursor()
In [60]:
cursor.execute(sql)
Out[60]:
In [61]:
i=0
for i in range(len(news_list)):
sql = """INSERT INTO josun1202 (title,news_list) VALUES('"""+title[i]+"""','"""+news_list[i]+"""')"""
cursor.execute(sql)
conn.commit()
이렇게 하면 아래처럼 기사의 제목과 내용이 정리되어 mysql에 들어가는 것을 확인 할 수 있습니다. :)

'데이터분석 및 프로젝트' 카테고리의 다른 글
한국복지패널데이터를 분석하여 봅시다 :) part1 (0) | 2020.01.21 |
---|---|
[정보이론] 위너-킨친 정리에 대해 알아봅시다:) (2) | 2020.01.19 |
Folium 지도에 heatmap을 이용하여 빈도수를 표현해보자 :) (0) | 2020.01.19 |
수열을 통해 마코프 체인의 단서를 얻어보자 :) (0) | 2020.01.15 |
머신러닝을 이용해 데이터분석에 필요한 기초지식을 습득해보자 :) (0) | 2020.01.15 |