예전부터 말 나오던 거긴 한데 웹소설들이 대부분 문장형 제목을 붙이기 시작하면서 제목=소설 설정 축약이 되더라고.
예를 들면
"남주의 엄마가 되었습니다"
"여주 자리는 필요없고 귀농하겠습니다"
이런 식인데 딱 봐도 대충 내용 파악이 되는 그런?
뭐 여튼 그래서 소설 제목들에 자주 사용되는 단어&그 소설의 소개글에 적힌 단어들의 사용 빈도를 통해
1) 현 시점에서 가장 인기 있는 소설 설정
2) 사람들이 현재 가장 좋아하는 키워드
같은 게 파악이 가능하지 않을까...란 생각 때문에 도전해보게 되었다.
일단 조아라 소설들을 대상으로 했는데 그 이유는 무래도 조아라가 아직까지는 로맨스판타지 장르 소설 정식 연재의 등용문같은 역할을 하고 있는지라 신인 작가들이 가장 많은 만큼 트랜드 반영이 기타 플랫폼 소설보다 조아라 소설들이 훨씬 빠르지 않나 싶어서 조아라 소설들을 대상으로 삼았다.
조건: 기간-2021년 1월부터 4월까지/전체 투데이베스트에 들어간 무료연재 소설( 주간베스트나 월간베스트가 쉬울 것 같긴 한데 결국 고정 독자층이 있는 사람들이 유리한 것 같아서 결국 투데이 베스트를 대상으로 하기로 했다)/로맨스판타지 장르 한정
목적: 1~4월 각각의 제목&소개글 내의 단어 사용 빈도 시각화/기간 내 제일 많이 사용된 단어들 시각화
하는 이유: 연습 겸 심심함 타파.별다른 이유 없음
(1) 제목 데이터 수집
from bs4 import BeautifulSoup as bs
import warnings
warnings.filterwarnings("ignore", category=UserWarning, module='bs4')
import re
import urllib.request as req
import pandas as pd
def titleCount(url):
titleList=[]
html=req.urlopen(url)
rq= bs(html, "html.parser")
for t in rq.select('a'):# 베스트에 오른 로맨스판타지 제목 추출
title=t.text.strip()
if '[로맨스판타지]' in title:
titleList.append(re.sub('\<\d.+?\>','',title.replace("[로맨스판타지]","")))
return titleList
def infoCount(url): #임시로 만들어놓은 소개글 추출 함수
infoList = []
html = req.urlopen(url)
rq = bs(html, "html.parser")
for t in rq.select('a'): # 베스트에 오른 로맨스판타지 소개글 추출
title = t.text.strip()
if '[' in title:
infoList.append(re.sub('\<\d.+?\>', '', title.replace("[로맨스판타지]", "")))
return infoList
def makeUrl(best,category,m,d,pagelist): #각 날짜별 투데이베스트에 오른 로판 추출
Title=[]
Info=[]
li=[]
for i in range (1,d+1):
for i2 in pagelist:
s = best + str(i2) + category +'&cur_year=2021&cur_month='+str(m)+'&cur_day='+str(i)
Title += titleCount(s)
Info += infoCount(s)
li.append(Title)
li.append(Info)
return li
if __name__ == '__main__':
pagelist=[1,2,3,4,5]#1~100순위가 담긴 페이지 번호
month=[1,2,3,4]#달
days=[31,28,31,30]#날짜
best='http://www.joara.com/best/today_best_list.html?page_no='# 조아라 투데이베스트 주소
category='&sl_category=&sl_subcategory=series'#로판 장르/무료 연재분
t_df=pd.DataFrame()
i_df=pd.DataFrame()
for m in month:
li=makeUrl(best,category,m,days[m-1],pagelist)
try:
t_df[str(m)+'월 로판 투데이베스트']=li[0]
i_df[str(m)+'월 로판 투데이베스트'] = li[1]
print('pass')
except ValueError:#ValueError가 있을 경우
t_df[str(m)+'월 로판 투데이베스트'] = pd.Series(li[0])
i_df[str(m)+'월 로판 투데이베스트'] = pd.Series(li[1])
print('pass')
#엑셀 파일로 저장
with pd.ExcelWriter('1-4월_조아라_로판_투데이베스트.xlsx') as writer:
t_df.to_excel(writer,sheet_name='제목')
생각보다는 안 긴데...? 사용한 모듈은
BeautifulSoup4 : 참고(pypi.org/project/beautifulsoup4/) 보통은 requests로 사이트 html을 텍스트로 받아온 뒤에 애로 html문서화 시켜 접근하는 것 같은데 조아라 베스트 페이지가 html이길래 그냥 애를 사용해서 긁어온 뒤에 특정요소 (여기는 'a')를 통해 제목을 뽑아왔다.
warnings: 경고메세지를 다루는 모듈. 여기서는 저 각 주 페이지를 넘겨 데이터를 받아오는 식으로 두었더니 계속 경고 메세지 뜨길래 짜증나서 끄려고...
re: 중간에 정규표현식을 써서 '<~편>으로 된거 자르고 대체하기 위해 사용했다. 아직 정규표현식은 어려워....
urllib.request : url을 여는데 도움이 되는 모듈.여기서는 urlopen을 이용하여 문자열로 받은 html주소를 여는데 사용했다.
pandas: 데이터 프레임을 이용하여 데이터 분석을 가능하게 해주는 모듈. 모든 데이터를 하나로 모으고, 이를 엑셀로 저장하는 데에 이용함
1~4월 까지 데이터 뽑는데 너무 시간이 걸린다는 게 좀 아쉽긴 한데 수정 방안을 잘 모르겠다. 대충 시간 재보니까 10분 넘게 정도 걸리는 것 같은데.....그리고 로맨스 판타지 장르로만 설정을 두고 싶은데 어떻게 해야 할지 모르겠음....
내일은 소개글 따로 뽑아오고.....저것들을 단어만 뽑아오는 과정이 되겠습니다...
참고
book.coalastudy.com/data-crawling/week-3/stage-2
Stage 2 - HTML 문서에서 데이터를 추출해보자
book.coalastudy.com
파이썬 웹 크롤링(Web Crawling) 강좌 - 1. 웹페이지 긁어오기
Beautiful Soup를 사용하여 간단한 웹 크롤러를 만드는 방법을 다루고 있습니다. Python 3.6으로 코드를 작성하였습니다. 버전의 차이로 필요한 모듈이 달라질 수도 있습니다. 웹 크롤러(Web Crawler)는 웹
webnautes.tistory.com
위키독스
온라인 책을 제작 공유하는 플랫폼 서비스
wikidocs.net
stackoverflow.com/questions/36039724/suppress-warning-of-url-in-beautifulsoup/41496131
Suppress warning of url in beautifulsoup
I'm using Beautiful Soup 4 to parse some html-formatted text, scraped from the Internet. Sometimes this text is simply the link to some website. A fact that BS4 is very cross about: UserWarning: "...
stackoverflow.com
docs.python.org/ko/3.10/library/urllib.request.html
urllib.request — URL을 열기 위한 확장 가능한 라이브러리 — Python 3.10.0a7 문서
urllib.request — URL을 열기 위한 확장 가능한 라이브러리 소스 코드: Lib/urllib/request.py urllib.request 모듈은 복잡한 세계에서 URL(대부분 HTTP)을 여는 데 도움이 되는 함수와 클래스를 정의합니다 — 기
docs.python.org
'프로젝트' 카테고리의 다른 글
심심해서 도전해보는 1~ 5월 조아라 인기 로맨스판타지 웹소설 제목/소개글 단어 사용 빈도 탐색(5) - 불용어 처리 (0) | 2021.05.17 |
---|---|
심심해서 도전해보는 1~ 5월 조아라 인기 로맨스판타지 웹소설 제목/소개글 단어 사용 빈도 탐색(4) - 소개글 데이터 수집 및 월간 분류 (0) | 2021.05.14 |
심심해서 도전해보는 1~ 5월 조아라 인기 로맨스판타지 웹소설 제목/소개글 단어 사용 빈도 탐색(3) - 중간점검 (0) | 2021.05.03 |
심심해서 도전해보는 1~ 5월 조아라 인기 로맨스판타지 웹소설 제목/소개글 단어 사용 빈도 탐색(2) - 소개글 데이터 수집 (0) | 2021.05.02 |
학교과제)텀블벅 크리에이터를 위한 엑셀 자동화 (0) | 2021.04.01 |