은소랜 은퇴 연구소

지난달에 누적 방문자가 2만을 넘어섰을 때 블로그를 좀 더 보완하기 위해서 몇 가지 해야 할 일을 포스팅했었습니다.

 

 

그중에 한 가지가 현재 단순하게 되어 있는 "카테고리"를 보완 정리해서 좀 더 디테일하게 만드는 것이었는데 아직 제대로 진도를 못 나가고 있습니다.

 

굳이 핑곗거리를 찾는다면, 

첫째, 그동안 집안에 좀 큰일이 있어서 많이 바빴다는 것.

둘째, 누적 방문자가 2만에서 3만 넘어갈 때까지 시간이 좀 많이 있을 줄 알았는데, 예상 밖으로 빨리 넘어가는 바람에 기간적으로 여유가 없었다는 것 등을 들 수 있겠습니다.


(그 글을 쓰고 불과 한 달 정도 지났는데 누적 방문자가 오늘 현재 4,3000명으로 2배가 증가해버렸습니다. 특정 키워드의 유입량이 폭증을 한 행복한 이유입니다. ^^)

 

아무튼 "카테고리" 정리는 포스팅 숫자가 늘어날수록 부담되는 작업이 되므로 가능한 한 빨리 시작을 해야 할 일이어서 주말에 시간을 내어 사전 작업을 했습니다.

 

사전 작업이란 "현재 221개인 포스팅의 제목과 카테고리를 먼저 엑셀 파일로 정리"해 두는 것입니다.

이것만 되면 이 파일을 검토해 가면서 "2차 카테고리"들을 만들면 뒷부분의 일들은 비교적 손쉽게 해 치울 수 있을 것 같아서입니다.

 

그러면, 어떻게 엑셀 파일로 만들까 고민하다가 221개를 모두 수작업으로 등록하는 것은 비효율적인 것 같아서 최근 배우고 있는 "파이썬"을 활용해 보기로 했습니다.

 

프로그램 초보에게는 좀 무리였지만 그래도 용기를 내서 시작했다가 어젯밤은 거의 밤을 새웠습니다. 😰😰😰

코딩 전문가에게는 아무 일도 아닐 정도로 짧은 코드인데 계속 에러가 나고 원하는 답도 안 나오고 해서 중간에 포기할 생각까지 했습니다만 중년의 뚝심으로 간신히 성공시켰습니다. 😊😊😊

 

혹시 같은 일을 생각하는 분들도 계실 것 같아서 제가 한 일의 과정을 간단히 소개드립니다.

 


 

1. 제 블로그의 제목과 카테고리 

아래와 같이 제 블로그의 글들의 제목과 카테고리들만 읽어와서 엑셀 시트를 만듦.

한 페이지에 12개의 글들이 있고 페이지 숫자는 모두 20개임. 이들을 파이썬 프로그램을 활용하여 크롤링해야 함.

 

2. 엑셀 파일의 형태

만들 엑셀 파일은 아래와 같은 형태임,

여기에 각 글의 서브 카테고리(Sub_Cateogory)를 만들어서 정리해 두고 이것으로 보면서 각 글들의 카테고리를 수정해나갈 계획임.

 

3. 파이썬에서 CSV 파일을 만듦

위와 같이 엑셀에서 불러올 수 있는 파일을 만들기 위해서는 파이썬에서 CVS 포맷의 파일을 만들면 됨.

전체 글의 "제목과 카테고리" 부분을 긁어 와서 CVS 포맷으로 정리하면 되는데, 이 부분을 진행하기 위해서 파이썬에서 웹 스크레핑을 지원하는 "뷰티플 수프, BeautifulSoup"라는 라이버러리를 사용함.
이를 이용하면 저 같은 코딩 초보라도 비교적 손쉽게 웹페이지에서 원하는 데이터를 긁어 올 수 있음.

 

좀 전문적이기는 하지만 위의 스캔 화면에 보이는 "제목"과 "카테고리"가 갖고 있는 HTML 문장 중에서의 특성, 선택자들을 확인해서 그 부분을 가져오는 형태로 코딩을 하고, 가져온 데이터를 리스트 포맷으로 만든 다음에 이 리스트 데이터중의 요소들을 하나씩을 만들어둔 CSV 파일에서 추가해 나가는 식으로 작성하면 됨.

 

 

4. 소스코드 

사실 제가 만든 코드는 전문가 입장에서 보면 아마 실소를 자아 낼 수준일지도 모르겠습니다.

더 간단하게 만들 수 있을 것 같은데 아직 초보여서 사실 뭐가 잘 못된지도 모르는 단계입니다. ^^

그냥 참고만 하시면 될 것 같습니다. 

 

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
import csv
import urllib.request
import urllib.parse
from bs4 import BeautifulSoup
pageNum = 1
while pageNum < 20 :
    url = f'https://smorning.tistory.com/?page={pageNum}'
    html = urllib.request.urlopen(url).read()
    soup = BeautifulSoup(html, 'html.parser')
    title = soup.select("h3.tit_post")
    category = soup.select(".link_cate")
    
    titleList = []
    
    i = 0 
    k = 0
    if pageNum == 19:
        while k < 4:
            temp = []
            temp.append(title[k].text)
            temp.append(category[k].text)
            titleList.append(temp)
            k += 1
        f = open(f'myblog.csv','a', encoding = 'utf-8', newline='')
        csvWriter = csv.writer(f)
        for l in titleList:
            csvWriter.writerow(l) 
        f.close
        print("크롤링 완료")
        break
    else:
        while i < 12:
            temp = []
            temp.append(title[i].text)
            temp.append(category[i].text)
            titleList.append(temp)
            # print(title[i].text)
            # print(category[i].text)
            # print()
            
            # print(titleList[0])
            # print(temp)
            # print(titleList)
            i += 1
        f = open(f'myblog.csv','a', encoding = 'utf-8', newline='')
        csvWriter = csv.writer(f)
        for j in titleList:
            csvWriter.writerow(j)
        
    pageNum += 1
  
    
    f.close
cs

 

파이썬은 이처럼 활용도가 높으므로 시간을 가지고 천천히 차근차근 배워 가볼 생각입니다.

감사합니다.


이 글을 공유합시다

facebook twitter kakaoTalk naver band