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

2022. 12. 4. 00:00·활동내역.zip/개인
728x90

Type: 데이터 수집 / 분석

주제: Web Crawling

사용 IDE: IntelliJ IDEA

사용 언어: Python

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

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

더보기
 

GitHub - TMInstaller/WebCrawling_Myblog: WebCrawling project demo

WebCrawling project demo. Contribute to TMInstaller/WebCrawling_Myblog development by creating an account on GitHub.

github.com


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

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

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

 

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

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

비공개 포함

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

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

 

참고했던 강좌 바로가기

더보기

https://nomadcoders.co/python-for-beginners/lobby

 

Python으로 웹 스크래퍼 만들기 – 노마드 코더 Nomad Coders

Python For Beginners

nomadcoders.co

 

사용 할 IDE는 IntelliJ로 하였다

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

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


설계 - 무엇을 얻어올까?

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

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

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

 

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

 

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

얻어올 정보들

 


코드 작성

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

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

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

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


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

from requests import get
from bs4 import BeautifulSoup

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

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

더보기

https://pypi.org/

 

PyPI · The Python Package Index

The Python Package Index (PyPI) is a repository of software for the Python programming language.

pypi.org


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코드들이 나오는데, 아래에서 확인할 수 있다

더보기

https://developer.mozilla.org/en-US/docs/Web/HTTP/Status

 

HTTP response status codes - HTTP | MDN

HTTP response status codes indicate whether a specific HTTP request has been successfully completed. Responses are grouped in five classes:

developer.mozilla.org


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
저작자표시 비영리 변경금지 (새창열림)

'활동내역.zip > 개인' 카테고리의 다른 글

[WebCrawling] 웹사이트를 직접 분석해보자 -4편  (0) 2022.12.05
[WebCrawling] 웹사이트를 직접 분석해보자 -3편  (0) 2022.12.05
[WebCrawling] 웹사이트를 직접 분석해보자 -2편  (0) 2022.12.04
[HTML+CSS] 무작정 따라 만들어보기(쿠팡 footer만들기 2편)  (0) 2022.11.20
[HTML+CSS] 무작정 따라 만들어보기(쿠팡 footer만들기 1편)  (0) 2022.11.20
'활동내역.zip/개인' 카테고리의 다른 글
  • [WebCrawling] 웹사이트를 직접 분석해보자 -3편
  • [WebCrawling] 웹사이트를 직접 분석해보자 -2편
  • [HTML+CSS] 무작정 따라 만들어보기(쿠팡 footer만들기 2편)
  • [HTML+CSS] 무작정 따라 만들어보기(쿠팡 footer만들기 1편)
ThreeLight
ThreeLight
ThreeLight Studio의 블로그, TimeMap.exe에 오신 것을 환영합니다.
  • ThreeLight
    TimeMap.exe
    ThreeLight
  • 전체
    오늘
    어제
    • 분류 전체보기 (245)
      • Checkpoint (1)
      • (3D)Dev Deep Dive (0)
        • Templates & Guides (9)
        • Frontend origin (9)
        • Backend origin (1)
        • TroubleShootings (4)
      • Development Study (95)
        • Frontend (36)
        • Backend (21)
        • CS(Computer Science) (2)
        • Background Knowledges (11)
        • Algorithm (2)
        • Mobile (3)
        • AWS (6)
        • Python (6)
        • MSW(MapleStoryWorlds) (8)
      • Coding Test (59)
        • 문제.zip (1)
        • BaekJoon_JavaScript (0)
        • Programmers_JavaScript (9)
        • BaekJoon_Python (23)
        • Programmers_Python (10)
        • Undefined_Python (3)
        • Programmers_SQL (13)
      • 활동내역.zip (43)
        • 개인 (21)
        • Techeer (12)
        • Bootcamp (7)
        • Hackathon (1)
        • TeamProjects (2)
      • 여기 괜찮네??(사이트 | App) (5)
      • 재미있는 주제들 (8)
      • 개발 외 공부 저장소 (11)
        • 생산운영관리 (3)
        • 생활속의금융 (6)
        • 경영정보시스템 (2)
  • 링크

    • TimeMap.dmg (Portfolio)
    • GitHub 바로가기
    • 오픈프로필(카카오톡)
    • Medium 바로가기
    • Disquiet 바로가기
    • LinkedIn 바로가기
  • 인기 글

  • 태그

    JavaScript
    TypeScript
    Baek Joon
    프로그래머스
    CSS
    Python
    programmers
    HTML
    SQL
    react
  • 최근 글

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.1
ThreeLight
[WebCrawling] 웹사이트를 직접 분석해보자 -1편
상단으로

티스토리툴바