견리더의 알(R)파(Python)고
고용 관련 뉴스기사 분류 및 토픽 모델링 - 1 본문
2020년 코로나로 뉴 노멀시대가 열렸다. 이에 관하여 고용과 근로형태는 어떨게 바뀌었는지 알아보자.
순서
뉴스기사 크롤링 -> word2vec을 이용한 키워드 별 뉴스기사 분류 -> 분류된 뉴스기사 별로 토픽 모델링
끝이다.
아마 여기 게시글은 코드를 올려 놓겠지만 자세한 설명은 천천히 수정할 계획이다
가장먼저 뉴스기사 크롤링을 해보자
- 뉴스기사 url 준비
위는 뉴스기사 url 들이다. 이 url들을 크롤링으로 가져온다
.
.
.
성공했다. 어떻게 했냐고? url 수집은 따로 다른 게시글에 올려놓을 예정이다.
이 수집한 url을 하나씩 파싱해 기사의 제목, 날짜, 본문, 카테고리를 수집한다.
urllist는 위 엑셀 파일을 불러와 url를 list 형식으로 받아 온 것이다.
data = pd.DataFrame(columns=['date', 'title', 'text', 'category','url'])
j = 0
for i in tqdm(urllist):
try:
webpage = urlopen(i)
soup = BeautifulSoup(webpage, 'html.parser')#<1>
aa = soup.select('.article_info h3#articleTitle')
test_name = aa[0].text # <2>제목 가져오기
aa = soup.select('.article_info .t11')
aa[0].text[0:10]
test_date = datetime.datetime.strptime(aa[0].text[0:10], '%Y.%m.%d') # <3>날짜 가져오기
# <4>본문가져오고 정제하기
aa = soup.select('#articleBodyContents')
te = aa[0].text.replace(soup.select('#articleBodyContents script')[0].text, "")
trash = [i.text for i in soup.select('#articleBodyContents a')]
for k in trash:
te = te.replace(k, "")
text = te.replace('\n', "").replace(" ", "").replace('\t', "").replace('무단 전재 및 재배포 금지', "")
# <5>
cate = '경제' if len(re.findall('sid1=101',i)) == 1 else '사회' #<6>
tlist = [test_date, test_name, text, cate,i]
data.loc[j, :] = tlist
j = j + 1
except:
tlist = [0,0,0,0,0]#<7>
data.loc[j, :] = tlist
j = j + 1
del i; del j; del te; del soup; del test_date; del test_name; del text; del tlist; del trash; del k; del cate;
#<8>본문 전처리
data = data.drop_duplicates() #중복제거
data = data[data['text'] != 0] #0인 값 제거
<1> BeautifulSoup을 이용하여 해당 웹페이지를 가져온다.
<2,3,4> soup.select 를 통해 기사의 제목, 날짜, 본문을 가져온다.
<5> 기사 뒤에 거의 "무단 전재 및 재배포 금지" 라는 문구가 반복되어, 지워둔다. 나머지 배제어는 뒤에서 정제 할 예정
<6> url를 사세히 보면 sid=101은 경제, 102는 사회란것을 알 수 있다. (지금 url list에는 경제, 사회만 존재한다.)
<7> 혹시 기사가 없어질 경우 오류가 날 수 있는데, 그때는 다 0으로 채워 for문을 돌리는데 멈추지 않도록 한다.
<8>중복된 기사, <7>의 경우의 기사를 제거한다.
사실 내 코드는 정말 나에게만 쓸 수 있는 코드이고 이 내용에 핵심은 크롤링인데 그에 대한 내용이 없어서 읽는 사람에세 좀 죄송하다.... 얼른 크롤링 올려야 하는데 아직 저도 완벽하지 않아서 ㅠ
다음은 형태소 분석과 배제어 추가를 업로드 해야 겠다.
'프로젝트' 카테고리의 다른 글
고용 관련 뉴스기사 분류 및 토픽 모델링 - 5 (토픽 모델링하기 gensim, lda) (0) | 2020.12.07 |
---|---|
고용 관련 뉴스기사 분류 및 토픽 모델링 - 4 (word2vec활용하기) (0) | 2020.11.30 |
고용 관련 뉴스기사 분류 및 토픽 모델링 - 3 (word2vec) (0) | 2020.11.23 |
고용 관련 뉴스기사 분류 및 토픽 모델링 - 2 (사전에 단어 추가, ckonlpy) (0) | 2020.11.10 |
프로젝트의 쓸 패키지들 (0) | 2020.11.05 |