1. 웹스크래핑이란?
웹스크래핑이란 웹사이트에서 원하는 정보를 추출하는 작업이다. web index mining, data mining이라고도 한다.
selenium을 쓰는 방법도 있고, request와 beautifulsoup를 쓰는 방법도 있다. 흔히 웹 크롤링과 웹 스크래핑의 차이점에 대해 궁금해하는데 웹 크롤링은 자동화된 시스템이 자동으로 웹을 탐색하고 분류하는 방법이고 웹 스크래핑은 웹 상에서 원하는 정보를 추출하는 작업이다.
2. 필요 환경 구축하기
(1) 내가 사용한 에디터 : vscode
엄청 유명한 에디터다..!! 누구나 구글링으로 쉽게 다운로드 받을 수 있다.
(2) 내가 사용한 파이썬 모듈 : 파이썬 3.8 모듈
나는 3.8 버전을 사용했다.
(3) 웹 스크래핑을 위해 사용한 방법 : requests, beautifulsoup
커맨드 창에 pip install requests, pip install beautifulsoup4 를 입력해 쉽게 다운로드 받을 수 있다.
(4) 크롬과 구글 크롬 시트를 사용할 생각이다.
3. 코드 구현
(1) 코드 계획
부산에 살기에 오늘자 부산 코로나 현황 정보를 스크래핑해볼 생각이다.
busan_covid19.py에서 스크래핑하는 함수를 구현하고 save.py에서 csv형태로 스크래핑한 내용을 저장한 뒤 main.py에서 최종적으로 구현해주고 구글 스프레드 시트에서 엑셀파일 형태로 확인해볼 것이다.
(2) busan_covid19.py (스크래핑하는 부분)
import requests
from bs4 import BeautifulSoup
URL = f"https://www.busan.go.kr/covid19/Corona19.do"
def get_today_info() :
website = requests.get(URL)
soup = BeautifulSoup(website.text,"html.parser")
t_lst= list(soup.find("p",{"class":"covid-state-date"}).find("span",{"class":"item1"}).string)
covid_state_chart = ("{0}월 {1}일 ({2}) {3}시 기준").format(t_lst[8],t_lst[18]+t_lst[19],t_lst[30],t_lst[34]+t_lst[35])
covid_state_confirmed = soup.find("li",{"class":"covid-state-confirmed"}).find("div",{"class":"covid-state-count"}).get_text(strip=True)
covid_state_cured = soup.find("li",{"class":"covid-state-cured"}).find("div",{"class":"covid-state-count"}).get_text(strip=True)
covid_state_treatment = soup.find("li",{"class":"covid-state-treatment"}).find("div",{"class":"covid-state-count"}).get_text(strip=True)
covid_state_dead = soup.find("li",{"class":"covid-state-dead"}).find("div",{"class":"covid-state-count"}).get_text(strip=True)
result_lst = [covid_state_chart, covid_state_confirmed , covid_state_cured , covid_state_treatment , covid_state_dead]
return result_lst
requests 와 beautifulsoup 모듈을 import해준다.
URL을 부산 코로나 홈페이지로 설정해준다.
● get_today_info 함수 부분
- 변수 requests에 URL 주소로 된 웹과의 연결을 가능케한다.
- 변수 soup 안에 웹사이트 소스코드를 모두 담는다.
- find 함수를 통해 원하는 정보를 모두 스크래핑해준다.
+) 참고로 find 함수로 스크래핑하는 방법은 다음 사이트에서 참고하길 바란다.
- result_lst 안에 스크래핑한 정보들을 담아주고 반환한다.
(3) save.py (csv 파일형태로 내용을 저장하는 부분)
import csv
def save_to_file(files) :
file1 = open("covid-19.csv",mode="w",encoding="UTF-8")
writer = csv.writer(file1)
writer.writerow(["갱신 시간", "신규확진자 수","격리해제(퇴원)","치료중(격리중)","사망자수"])
writer.writerow(files)
return
- csv 를 import 해준다.
- 변수 file1 안에 내용을 저장할 파일명, writing mode과 인코딩 방법을 적어준다.
- 변수 writer 를 선언해준다.
- writerow 함수를 통해 스크래핑한 정보들을 넣어준다.
4. 결과
main.py 쪽을 디버깅하면 위의 그림과 같이 covid-19.csv 파일 안에 스크래핑한 내용들이 담긴 것을 확인할 수 있다.
구글 스프레드 시트 사이트에서 covid-19.csv 파일을 열면 위와 같이 정리되는 모습을 볼 수 있다.
'개인 프로젝트 > 잡다한 것들' 카테고리의 다른 글
리눅스 환경에서 C 코드를 통해 전화번호 관리 프로그램 만들기 (0) | 2022.05.15 |
---|---|
[C/C++] 대칭절 - ! 특별한 날 - ! (0) | 2022.01.18 |
[파이썬 유튜브 다운로드] 파이썬으로 유튜브 영상 다운로드하기 (0) | 2021.08.20 |
[파이썬 웹크롤링] 1to50 매크로 만들기 (0) | 2021.08.20 |