본문 바로가기

IT 이야기

책 소개 : '파이썬을 통해서 배우는 크롤링, 매크로에서 데이터 분석까지 | 국민청원 크롤링, 네이버 TV 댓글 매크로, 마스크 구매 매크로 등'

구매 링크!

https://smartstore.naver.com/gyunggyung/products/4848817970?NaPm=ct%3Dk7lcjd91%7Cci%3Dcheckout%7Ctr%3Dppc%7Ctrx%3D%7Chk%3Df6d0fffdda4d6cc17df18ce51634a55a71aec009

 

파이썬을 통해서 배우는 크롤링, 매크로에서 데이터 분석까지 | 국민청원 크롤링, 네이버 TV 댓글 매크로, 마스크 구매 매크로 등 : 힙뀽이

파이썬을 통해서 배우는 크롤링, 매크로에서 데이터 분석까지 | 국민청원 크롤링, 네이버 TV 댓글 매크로, 마스크 구매 매크로 등

smartstore.naver.com

 '파이썬을 통해서 배우는 크롤링, 매크로에서 데이터 분석까지 | 국민청원 크롤링, 네이버 TV 댓글 매크로, 마스크 구매 매크로 등' 1판이 나왔다. 5,000원의 싼 값으로 판매를 시작할 것이다. 이 책을 읽으면 누구나 간단한 크롤러와 매크로 프로그램을 만들 수 있을 것이다. 이 책은 원가가 13,000원으로 판매하는 책이다. 하지만 오픈 특가로 판매하는 만큼의 페널티는 존재한다. 바로 데이터 분석은 이 책의 1판에서는 다루지 않을 것이다. 오직 데이터 분석은 이런 거구나. 할 수 있을 만큼의 지식만 얻을 것이다.

목차

파이썬 기초 강의
- 파이썬 설치 + Hello World
- 변수란 무엇인가?
- 문자열 개념
- list 개념
- if 문
- for 문
- 함수란 무엇인가?
- 파일 읽기, 쓰기, 추가
- 예외 처리

크롤링
- 크롤링이란 무엇인가?
- 웹 사이트는 어떻게 만들어져 있을까?
- 국민청원 크롤링
- 크롤링할 요소 찾기
- 크롤링과 위법성

매크로
- 매크로란 무엇인가?
- 네이버 TV 댓글 매크로 제작
- 네이버 자동 로그인
- 네이버 TV 댓글 쓰기
- 쿠팡 마스크 구매 매크로 제작
- 매크로와 위법성

데이터 분석
- 모은 데이터들을 어떻게 활용할 것인가?
- 국민 청원 분석
- 데이터 분석의 방법론
- 키워드 분석
- 워드 클라우드
- 그래프
- 연관 키워드 그래프
- 응용

 위 목차를 보면서 우리가 어떤 과정을 학습하는지 알 수 있다. 크롤링과 매크로 제작에 초점을 맞춰서 제작한 책이다. 가장 빠르게, 가장 효율적으로 학습할 수 있는 과정을 만들었다.


 파이썬 기초의 일부 내용을 같이 살펴보자. 이 내용은 후반부의 내용으로 처음 파이썬을 보는 사람에게는 어려울 수 있다. 그러니 "아, 이렇게 설명을 하고 따라서 학습을 하면 되겠구나!" 하고 생각하면 된다.

파일 읽기, 쓰기, 추가

 우리의 목표는 크롤링이다. 크롤링은 웹페이지에 있는 데이터를 가져와서 저장해야 된다. 따라서 파일 쓰기 기능이 중요하다. 파이썬 내부에서 웹페이지를 가져와서 저장해도, 직접 파일로 저장하지 않으면 의미가 없다. 

 하나하나 살펴보자.

import csv


 먼저 우리는 csv라는 형식으로 파일을 저장할 것이다. 따라서 위 명령어를 사용한다. import는 뒤에 따라오는 함수를 사용하겠다는 의미다. 우리는 파이썬 내부에 이미 만들어져 있는 csv라는 함수를 쓸 것이다.

def FindPetition(num):
    row = []
    csvRow = ["num","category","start-days","end-days","person","progress","title","count","petition_overview"]
    for r in csvRow:
        row.append(r+str(num))
    writer.writerow(row)


 다음으로 이 함수를 살펴보자. 먼저 writer.writerrow(row)는 우리가 원하는 csv 파일에 한 줄을 변수 row로 쓰는 것이다.

 writer 전 까지를 보면, row 리스트를 만들고 함수에서 받은 num을 계속 더하는 것이다. 먼저 아래 결과를 봐 보자. 직접 쳐보면 이해가 될 거라고 믿는다.

결과

csvFile = open("2020_03_03_petition.csv", 'w', encoding='UTF-8')
writer = csv.writer(csvFile)
writer.writerow(["num","category","start-days","end-days","person","progress","title","count","petition_overview"])
for i in range(511490,545069):
    FindPetition(i)
csvFile.close()


 시작 부분의 open은 우리가 저장할 csv 파일의 이름을 정하는 거다. w는 쓰기라는 뜻이다. 우리는 크롤링한 결과를 csv 파일에 쓰고 저장할 거라서 w를 쓴다. 그리고 인코딩을 설정한다. 인코딩은 컴퓨터에서 글자가 깨지지 않게 만드는 설정이라고 생각하면 된다. 그리고 우리는 표준인 UTF-8을 쓸 것이다. 

 다음으로 writer는 우리가 위에서 설정한 csvFile로 설정한다. writer 변수를 쓰면 위 csv 파일에 쓰기를 할 수 있는 것이다. 위에서 한 것과 같이 writer.writerow는 csv 파일에 1주일 다음 변수로 쓰는 것이다. 그리고 for 문을 돌려서 위에서 정의한 FindPetition 함수를 여러 번 실행한다. 그리고 csvFile.close()를 통해서 csv 파일을 닫아준다.

 pandas라는 프로그램을 통해서 만든 파일을 python으로 열 수 있다. 간단하게 pandas를 import 하고 pd.read_csv를 쓰면 간단하게 열 수 있다.

pandas 로 간단하게 출력


 그리고 크롤러 제작을 학습하는 방식이다. 개념을 설명하고 문제를 풀게 한다. 상당하 괜찮은 방법이라고 생각된다.

 이거는 bs4 라이브러리 안에 있는 함수를 사용하는 것이니, 사용방법은 아 이렇게 하는 거구나 하고 넘어가면 된다. 간단한 설명을 하겠다.

 bsObj로 우리가 모든 html 코드를 가져온 함수를 만들었다. 따라서 우리는 bsObj 뒤에. find 함수를 사용할 것이다. find는 말 그대로 찾는 것이고 우리가 가져올 부분을 찾으면 된다. class="petitionsView_progress"이 우리가 찾을 부분이다. 따라서 {"class"="petitionsView_progress"}이렇게 우리가 찾는 부분을 지정하면 된다.

청원 진행상황

 위에서 간단하게 설명한 부분들이 중요하다. 이 부분만 바꾸면 원하는 부분을 가지고 올 수 있다. 그렇다면 제목, 청원 참여인원, 내용을 가지고 오는 걸 실습해보겠다. 먼저 위를 보면 제목을 찾는 방법을 알 수 있다. 이와 같이 나머지도 찾아서 한 번 가지고 와보자.

 이것은 실습이니 스스로 해보자. 스스로 해본 뒤에 뒤에 내용을 읽는 것을 추천한다. 이걸 직접 해보면 실력이 많이 늘 것이다. 도저히 모르겠으면 그냥 뒤로 넘겨서 한 번 쳐보고 이해해도 괜찮다.

크롤링을 진행할 내용 : "제목, 카테고리, 청원 시작 날짜, 청원 마감 날짜, 청원인, 청원 상황, 참여인원, 청원 내용" 

 직접 답을 보지않고 문제를 풀 시간을 주기 위해서 검은 화면으로 페이지를 가린다. 물론 이 뒤에는 답이 있으니, 걱정하지 않아도 된다.


 마지막으로 보여줄 내용은 매크로 제작을 하는 부분이다. 매크로를 제작할 때도 개념을 충분히 설명하고 그걸 확인하기 위해서 문제를 푼다. 물론 문제의 답은 검은 화면이 끝나고 바로 보여준다. 생각할 시간을 가지고 자신이 배운 내용으로 문제를 풀 수 있는 기회를 제공하는 것이다. 이 과정을 마치면 자신만의 크롤러나 매크로를 만드는 일은 쉬울 것이다.

 여기서는 찾은 id를 find_element_by_name 부분에 넣고 send_keys 안에 자신이 자동으로 넣을 문자를 넣는다.

자동으로 문자를 넣은 화면

 다음으로는 로그인을 하는 방법이다. 다시 개발자 모드를 열고 확인해보면, 로그인 클릭 버튼이 들어가 있으며, 동시에 form 부분에 id인 frmNIDLogin 있는 것을 찾을 수 있다.

로그인 화면의 개발자 모드

 그리고 그 안에 fieldset이 있고 그 fieldset 안에 input 부분이 있다.

로그인 화면의 개발자 모드

 아래 부분이 완성 채다.

driver.find_element_by_xpath('//*[@id="frmNIDLogin"]/fieldset/input').click()

 우리는 간단하게 이 책이 어떻게 학습을 시키는지 알아봤다. 이 책을 구매해서 후회하는 일은 없을 것이다. 파이썬을 모르는 사람도 이번 기회에 파이썬을 학습하면서, 실습을 진행할 수도 있다. 파이썬을 아는 사람도 직접 유용한 프로그램을 제작해서 파이썬 실력을 향상할 수 있다. 

 개발을 잘 하면, 삶이 조금 더 편해질 것이다.