본문 바로가기
파이썬(Python)

[파이썬 / Python] 업무자동화에 대한 생각_크롤링 예시

by Serendipity_ 2022. 6. 4.
반응형

엑셀, 파워쿼리, 파이썬 등을 공부하면서 가장 좋았던 부분은 바로 단순반복업무를 내가 하지 않아도 된다는 점이었다.

 

단순반복업무는 컴퓨터가 나보다 훨~~씬 잘한다. 컴퓨터에게 단순반복업를 맡기는 것에 대한 주관적 생각이다. 


1. 실수가 줄어든다. 

 - 처음 입사했을 때 9시 출근이지만 8시에 출근해서 엑셀 데이터를 수작업 하며 9시까지 보고했다. 

 - 아침에 1시간 일찍 출근하여 1시간 동안 데이터가 틀린 게 없나 집중적으로 보았음에도 실수할 때가 있었다. (당시 수작업)

 - 엑셀을 자동화한 이후 실수가 굉장히 많이 줄었다. 

 

2. 빠르다. 

- 오전에 8시에 출근해서 1시간 동안 하던 일을 복사 + 붙여넣기로 끝낼 수도 있다. 

- 10분 정도 검토 후 제출이 가능하다. 

 

3. 단순반복 업무에 대한 회의감이 없다.

- 대부분의 사람들의 경우, 지루한 반복업무를 경험하면 "내가 이러려고 회사왔나" 등의 생각을 많이 가지게 된다.

- 컴퓨터가 하고 있는 걸 보면, 즐겁고 뿌듯하다. 

 

[크롤링 예시] 

 : 크롤링이란 ? 크롤링(crawling) 혹은 스크레이핑(scraping)은 웹 페이지를 그대로 가져와서 거기서 데이터를 추출해 내는 행위다.

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
import requests
from bs4 import BeautifulSoup
import time
import csv

#What is my user-agent 사이트 검색 후 넣어주기
headers = {"User-Agent":"Mozilla/5.0 ~~ "}
 
filename = "원하는 파일이름.csv"
= open(filename, "w", encoding="utf-8-sig", newline="")

writer = csv.writer(f) #csv 파일만들기
#csv 머릿글 내용
data = ['Link''Title''Number''Address''Type''Page_num']

#csv 첫행 삽입
writer.writerow(data)

#반복문 시행
for i in range(1, 30) : 
    url = f'https://www.~~.pagenum = {i}' #url 주소입력 및 페이지 넘버 바뀌는 부분만 f-string으로 변경해주기
    print(str(i) + '페이지 입니다.') # 페이지 구분을 위함 (확인용)
    # print(url)
 
    res = requests.get(url)
   res.raise_for_status() #정상출력 확인
    soup = BeautifulSoup(res.text, 'html.parser')
    
    items = soup.select('.txtSet') #soup.select 사용 시 class명 앞에는 . 붙여야 함, id는 #
    for item in items :
        link = item.select_one('span > a').get('href') #하이퍼링크 읽어오기
        title = item.select_one('p').text.split(" ")[0]
        number = item.select_one('p').text.split(" ")[-1]
        address = item.select_one('.txtSection > li:nth-child(1)').text.strip() # strip : 공백제거
        type = item.select_one('.txtSection > li:nth-child(2)').text.strip() # li:ntd ~ 2개 있는 경우 이런 방식으로 해결
 
        writer.writerow([link, title, number, address, type, i])
        # print(link, title, number, address, type)    
        time.sleep(0.5)
 
 
print('------크롤링을 종료합니다------ ')
 
 

현재 코드로 웹사이트 내에 있는 데이터들을  엑셀 형태로 저장하는 코드이다.

처음엔 어려워보이지만 만들어보면 해볼만 하고, 업무처리속도는 비교할 수 없게 된다. 

해당 내용은 구체적인 부분은 변경하였고, 나의 개인적인 업무 참고용으로 블로그에 게시하였다.

(그래서 복붙하시면 작동이 안 된다.)

 

업무 자동화를 통해 많은 분들이 위에서 언급한 3가지 장점을 누려보았으면 좋겠다. 

 

반응형

댓글