활동내역.zip/개인

[WebCrawling] 웹사이트를 직접 분석해보자 -1편

TMInstaller 2022. 12. 4. 00:00
728x90

Type: 데이터 수집 / 분석

주제: Web Crawling

사용 IDE: IntelliJ IDEA

사용 언어: Python

사용 패키지: bs4 - BeautifulSoup, requests - get

GitHub Link: https://github.com/TMInstaller/WebCrawling_Myblog


Why?? - 이걸 만들게 된 계기는?

최근 꾸준한 코딩 테스트 준비와 백엔드에 대해 학습을 하던 중

파이썬에 대한 온라인 강의를 접했다

 

이 강의에서는 파이썬의 기초와 함께 웹 스크래퍼를 만드는 내용이 포함되어있었고,

이를 활용했을 때 어떤 프로젝트를 만들 수 있을까 생각을 해 보았다

비공개 포함

그러다가 126개나 쌓여있는 블로그의 글을 보고(비공개 글 포함)

내가 지금까지 작성해온 블로그의 데이터를 수집하면 어떨까 싶었다

 

참고했던 강좌 바로가기

 

사용 할 IDE는 IntelliJ로 하였다

JAVA쪽에 특화된 IDE이긴 하지만 단축키 및 사용법에

익숙해지면 후에 있을 프로젝트에 도움이 될 것 같아서 이 툴을 선택했다


설계 - 무엇을 얻어올까?

여러 번의 프로젝트를 진행하던 중 알게 된 중요한 사실은

코딩에 있어서 필요한 능력은 코드를 다룰 줄 아는 능력보다

무엇을 만들고자 하는가에 대한 목표를 명확히 설정하는 것이다

 

하지만 최종 목표를 바로 떠올리기는 힘들었기에 당장의 간단한 목표 한가지를 설정하고 이를 만들어보기로 했다

 

목표: 메인화면에 있는 제목 부분에 대한 정보를 얻어오자

얻어올 정보들

 


코드 작성

1. 웹 정보를 얻어올 파이썬 모듈 import

2. 블로그 url의 정보를 얻어올 코드 작성

3. 오류가 났을 때 원인을 파악할 수 있도록 조건문 작성

4. 정상적으로 실행 될 시 BeautifulSoup를 이용해 원하는 부분을 출력하는 코드 작성


1. 웹 정보를 얻어올 파이썬 모듈 import

from requests import get
from bs4 import BeautifulSoup

이번 편에서는 requests의 get methodbs4의 BeautifulSoup method를 이용하여 정보를 얻어올 것이다

+ 패키지 정보가 필요하다면?


2. 블로그 url의 정보를 얻어올 코드 작성

url = "https://time-map-installer.tistory.com/"
response = get(url)

url 변수에 나의 블로그의 링크를 넣어두었고

response에 url의 정보를 get()을 이용해서 가져오려고 한다

response = 응답


3. 오류가 났을 때 원인을 파악할 수 있도록 조건문 작성

if response.status_code != 200:
    # status_code가 200이 아니면 정상적인 실행이 아니라는 뜻이다
    print("페이지를 불러올 수 없습니다", response.status_code)
else:

response 변수에서 제대로 된 응답이 가능할 경우

.status_code를 이용해 출력해 보면 200이 나온다.

어딘가에 문제가 있으면 다른 response코드들이 나오는데, 아래에서 확인할 수 있다


4. 정상적으로 실행 될 시 BeautifulSoup를 이용해 원하는 부분을 출력하는 코드 작성

# else:
    soup = BeautifulSoup(response.text, 'html.parser')
    print(soup.find_all('div', class_='post-item'))

soup 변수를 생성BeautifulSoup를 이용해 웹 정보를 얻어올 준비를 하고,

잘 실행되는지 .find_all('목표 태그', class_='목표 클래스')를 이용해 출력을 해 본다

출력하려는 부분은 웹페이지에서 F12를 눌러 개발자 모드에서 확인 한 결과

div 태그post-item 전체였기에 위와 같이 작성하였다

개발자 모드에서 확인 한 결과


0. 전체 코드 / 실행 결과

# main.py
from requests import get
from bs4 import BeautifulSoup

# 블로그의 메인 페이지에서 각 글들의 정보를 긁어 올 프로그램을 생성 할 예정
url = "https://time-map-installer.tistory.com/"
response = get(url)
# get() = 입력 받은 url의 정보를 받아오는 코드
if response.status_code != 200:
    # status_code가 200이 아니면 정상적인 실행이 아니라는 뜻이다
    print("페이지를 불러올 수 없습니다", response.status_code)
else:
    # 정상적으로 불러오는 데에 성공 했을 때 실행 할 부분
    # Make BeautifulSoup to soup prepare the text of the website
    soup = BeautifulSoup(response.text, 'html.parser')
    # we are going to print all the
    print(soup.find_all('div', class_='post-item'))

주석을 달아 둔 전체 코드와 실행결과이다

실제 메인 페이지에 존재하는 타이틀 제목과 이미지 등이 나온다


다음 편에서 계속됩니다

 

[WebCrawling] 내 블로그의 정보를 직접 분석해보자 -2편

Type: 데이터 수집 / 분석 주제: Web Crawling 사용 IDE: IntelliJ IDEA 사용 언어: Python 사용 패키지: bs4 - BeautifulSoup, requests - get GitHub Link: https://github.com/TMInstaller/WebCrawling_Myblog 더보기 GitHub - TMInstaller/WebCraw

time-map-installer.tistory.com

 

728x90