지금까지는 여러 소설 사이트에서 소설 제목, 작가 이름, 소개글, 장르를 가지고 왔다. 현재까지 내가 가지고온 소설 사이트들은 카카오 페이지 카카오페이지 네이버 시리즈 네이버 시리즈 문피아 문피아 노벨피아 노벨피아 이렇게 4가지가 있다. 노벨피아는 기본적으로 f12를 막아놨기 때문에 따로 글을 작성하지 않았다. 카카오 또한 기존의 방식에서 다른 방식으로 크롤링하여 4만개의 데이터를 모두 모았다. 총 데이터는 159,596개다. 이제 이 데이터들을 가지고 본격적으로 장르 분류기를 만들어보려고 한다. 데이터 전처리 데이터 모으기 csv 파일 가져오기 각 파일에서 제목과, 작가이름만 가져오기 제목에서 필요한 부분만 가져오기(특수문자 및 필요없는 단어 제거) for t_list, g_list in zip(tit..
분류 전체보기
이제 카카오, 네이버, 문피아의 크롤링이 끝났다. 이제 노벨피아 차례인데, 노벨피아는 특이하게 다른 사이트들과 다르게 f12를 막아놨다. 저작권을 위해, 크롤링을 막아놓은 샘인데, 이게 나에겐 큰 난관으로 다가왔다. 이걸 뚫을 방법이 없나 하고 돌아다니며 찾아봤는데, 딱히 방법이 보이지 않았다. 하지만 집념의 힘으로 어떻게 뚫어내는데 성공했다! 일단 막아놓은걸 뚫었다고 쓰기에는 사이트에서 말 한데로 저작권 등 여러 문제가 있기 때문에 자세한 방법은 올리지 않겠다. 일단 긁을 수 있는건 다 긁은거 같다. 소개글도 긁을 수 있긴 한데 너무 오래걸릴거 같아서 패스했다.
현재까지 카카오페이지, 네이버 소설 목록을 크롤링 했다. 이제 문피아를 크롤링 할 차례다. (사실 크롤링은 1주일 전 쯤 다 끝냈는데 이것 저것 한답시고 글 쓰는게 좀 늦어졌다.) 먼저 문피아 홈페이지를 살펴보자 문피아는 다른 사이트 들과 다르게 전체 소설 목록 보는게 힘들게 되어있다. 이런 식으로 왼쪽에 왼쪽에 페이지 목록, 소설 목록이 모여있다. 여기서도 마찬가지로 두 단계로 나눠서 했다. 페이지 별(작가 연재, 일반 연재, 무료 연재, 선 독점작, 연재작, 완결작) 이상 총 6개의 페이지에 들어간다. 각 페이지의 끝 페이지 번호를 알아낸다. BeautifulSoup을 통해 크롤링 한다. 그리고 이번에는 더욱 빠른 크롤링을 위해 Multiprocessing을 이용할 예정이다. 관련 내용은 Beauti..
이전까지는 카카오 페이지의 소설 정보들을 크롤링했다. 데이터 프레임까지 다 만들었으니 이제는 네이버 소설을 크롤링할 차례다. 먼저 네이버 시리즈 각 카테고리의 링크들을 가져오자 # 네이버 소설 크롤링 본문 url_list = { '로맨스': 'https://series.naver.com/novel/categoryProductList.series?categoryTypeCode=genre&genreCode=201&page=', # 로맨스 '로판': 'https://series.naver.com/novel/categoryProductList.series?categoryTypeCode=genre&genreCode=207&page=', # 로판 '판타지': 'https://series.naver.com/novel..
지난번에 파일로 저장한 링크를 불러와 하나씩 가져와 데이터를 만드는 코드를 작성했다. # 제목 start = source.index('title":"') end = source.index('","o') title = source[start+8:end-6] novel_title.append(title) # 작가 start = source.index('author":"') end = source.index('},"i') author = source[start+9:end-1] novel_author.append(author) # 소개글 start = source.index('n":"') end = source.index('","u') intro = source[start+4:end] novel_intro.ap..
이전에 소설 링크를 가져와서 파일로 저장한 후, 하나씩 뽑아 셀레니움을 통해 정보를 가져오는 방식을 사용했다. 하지만 이 방식의 문제점은 15세 이상 이용가는 로그인을 해야하기 때문에 내가 크롤링한 소설 페이지중 일부만(특히 로맨스) 정보를 가져올 수 있었다. 로그인을 하지 않고 크롤링을 할 수 있는 방법이 있나 하고 생각을 해봤고, 생각난 방법이 requests를 사용하는 것이다. requests.get(url)를 사용하면 html 전체 소스 페이지를 가져오기 때문에 페이지를 이동하며 크롤링하는 셀레니움보다 훨씬 빠르고, 없으면 없었지 셀레니움처럼 로딩때문에 태그를 찾지 못하는 NoSuchElementException와 같은 오류도 뜨지 않는다. 그리고 requests.get으로 페이지 내용을 가져와보..
장르 자동 분류기 만들기 소설 정보 크롤링 먼저 글쓰기에 앞서, 이 프로젝트는 순전히 개인 사용용도로 크롤링 하는 것을 알립니다. 상업용도 및 유출은 하지 않습니다. (여러분들도 조심하세요) 카카오 페이지 카카오페이지에 가면 이렇게 장르별로 분류가 되어있는데 원래 계획은 전체에서 한 번에 긁어와 분류를 하려고 했지만, 일정 이상 스크롤을 내리면 페이지가 다운되는 문제가 발생했습니다. 그래서 장르별로 크롤링해서 합치기로 했다. (판타지만 해도 8천개에 가깝고, 로판은 18000개가 넘는다. ㄷㄷ 로판은 너무 많아서 스크롤을 끝까지 내릴수가 없어서 중간에 8천개 언저리에서 끊었다.) 순서는 이렇다. 스크롤을 끝까지 내린다. 해당 페이지를 가져온다. 해당 페이지에서 소설 링크를 가져온다. 파일로 저장한다. 파..
오류 csv 파일을 불러오는데 'utf-8' codec can't decode byte 0xb1 in position 1: invalid start byte 이런 오류가 뜬다. 해결법 encoding으로 cp949 또는 euc-kr를 넣어주면 된다.