[데이터 엔지니어링 데브코스 4기] 3주차 10/2 TIL

2024. 10. 2. 16:52·데이터 엔지니어링 데브코스

오늘은 웹 크롤링, 웹 스크래핑에 대한 교육에 앞서, 그에 대한 이론과 실습을 진행하였습니다!!

 

예전에.. 아주 먼 옛날.. 셀레니움으로 크롤링을 한 번 해본 경험이 있던 것 같긴한데... 까마득해요..

 

또 데이터 관리 인턴 시절.. 인턴 동기끼리 크롤링? 스크래핑? 을 통해 여러 간단한 프로그램도 만들어봤는데, 사실상 백지 상태인거같아요 ㅋㅋㅋㅋ

 

오늘 배운 내용은 실습 및 개념 위주라 개념과 BeautilfulSoup를 어떻게 사용하는 지 간단하게 코드를 정리해보았습니다!

개념 및 정리

  • Web : 인터넷에서 정보를 교환할 수 있는 하나의 플랫폼!
  • 웹 페이지는 HTML 형식으로 되어있고, 웹 브라우저는 클라이언트가 HTTP 요청을 보낸 후, 응답받은 HTML 코드를 랜더링 해준다!
  • 웹 크롤링 vs 웹 스크래핑
    • 웹 스크래핑 : 웹 페이지로부터 원하는 정보를 추출 -> 특정한 목적으로 특정 웹 페이지에서 데이터를 추출하는 작업!!
    • 웹 크롤링 : 크롤러를 이용해서 웹 페이지의 정보를 인덱싱 -> url 안에 어떤 정보가 있는지 url을 타고다니며 반복적으로 데이터를 가져오는 데이터 색인!!
  • REP(로봇 배제 프로토콜) : 사람이 아닌 로봇의 무분별한 요청을 막기 위해 등장!
    • robots.txt
    • User-agent, Disallow, Allow 등의 키워드를 통해 사용!
      • User-agent : 규칙이 적용되는 대상 사용자 에이전트
      • Disallow : 크롤링을 금지할 웹 페이지
      • Allow : 크롤링을 허용할 웹 페이지
  • DOM(Document Object Model) : 웹 문서의 구조화된 표현
    • 트리 형태로 구성
      • DOM 트리를 순회하며 원소 추가 및 탐색 가능!
    • 각 노드를 객체로 구성하여 문서를 더욱 편리하게 관리 가능!
    • 브라우저가 HTML을 DOM으로 바꾸는 이유!!
      • 원하는 요소를 동적으로 변경 가능해짐!!
      • 원하는 요소를 쉽게 탐색 가능!!
  • BeautifulSoup
    • 파이썬으로 HTML을 분석하게 해주는 HTML parser!
    • 요소를 가져왔는데 깨질 경우! -> dict에 접근하듯이 dict[key] 형태로 접근!
    from bs4 import BeautilfulSoup
    import requests
    
    res = requests.get("탐색하고자 하는 url")
    
    soup = BeautifulSoup(res.text, "html.parser")
    
    # 분석된 html을 가독성 좋게 보여주는 prettify()를 사용!
    print(soup.prettify())
    
    # title 탐색
    soup.title
    
    # head 탐색
    soup.head
    
    # body 탐색
    soup.body
    
    # 특정 태그로 감싸진 요소 하나 찾기!
    temp = soup.find("태그 명!")
    
    # 특정 태그로 감싸진 요소 모두 찾기!
    soup.find_all("태그 명!")
    
    # 태그 명 출력
    temp.name
    
    # 태그 내용 출력
    temp.text

 


정적 웹 사이트의 경우 HTML 문서가 완전하게 응답되지만, 동적 웹 사이트의 경우 HTML이 렌더링 될 때까지 지연시간이 존재하는데 이런 경우는 어떻게 해야할까??

  • 동적 웹사이트는 자바스크립트를 통한 비동기 처리를 하기 때문에 앞선 BeautilfulSoup의 html.parser로 HTML 문서를 완전하게 가져올 수 없는 경우가 발생한다..!
    • 파이썬으로 이러한 데이터를 모두 가져오기 위해 할 수 있는 방법? -> 웹 브라우저를 파이썬으로 조작할 수 있는 Selenium을 사용하자!!!
      • 셀레니움은 UI와의 상호작용이 가능!!!

 

회고

기술도 중요하지만, 웹 크롤링과 웹 스크래핑은 저작권, 데이터 문제 및 서버 과부화 문제가 발생할 수 있으므로 조심해야한다는 점을 다시 한 번 중요하게 알고 가는 강의였습니다!

 

실습도 좋고 강의도 좋게 짜여있지만, 아쉬운 점은 다른 데브코스 과정의 리뷰에서와 동일하게 강의의 최신화가 덜 되어있다는 점 같아요.

실습 타겟 사이트가 사라졌거나, 이전에 vscode 환경 설정을 했는데 갑자기 주피터 노트북을 쓴다던가 하는 점...

 

또 강의 시간이 애매하게 짜여있다는 점 같아요.

어떤 날은 8시간 전부를 투자해도 부족한 경우가 있지만, 어떤 날은 3시간만 투자해도 끝나는 경우가 있는 점이 아쉬운 것 같아요.

 

그렇다해서 강의 질이 떨어지거나 커리큘럼이 별로인 건 아닙니다!!

제가 대화해 본 분들만 해도 스펙이 후덜덜하고.. 기초적인 부분과 꼭 알고가야하는 부분은 모두 짚어주거든요!!

 

제 경험상이지만, 아직까지는 강추인 과정입니다!!

 

저작자표시 (새창열림)

'데이터 엔지니어링 데브코스' 카테고리의 다른 글

[데이터 엔지니어링 데브코스 4기] 4주차 10/8 TIL  (2) 2024.10.08
[데이터 엔지니어링 데브코스 4기] 4주차 10/7 TIL  (2) 2024.10.07
[데이터 엔지니어링 데브코스 4기] 3주차 10/4 TIL  (2) 2024.10.04
[데이터 엔지니어링 데브코스 4기] 3주차 10/1 TIL  (1) 2024.10.01
[데이터 엔지니어링 데브코스 4기] 1주차 WIL  (0) 2024.09.29
'데이터 엔지니어링 데브코스' 카테고리의 다른 글
  • [데이터 엔지니어링 데브코스 4기] 4주차 10/7 TIL
  • [데이터 엔지니어링 데브코스 4기] 3주차 10/4 TIL
  • [데이터 엔지니어링 데브코스 4기] 3주차 10/1 TIL
  • [데이터 엔지니어링 데브코스 4기] 1주차 WIL
김줘
김줘
김줘와 같이 데이터, 컴퓨터, IT 공부
  • 김줘
    초보개발자 김줘의 코딩일기
    김줘
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 데이터 엔지니어링 데브코스
      • 데이터
        • Airflow
        • Spark
        • Kafka
        • dbt
      • TroubleShooting
      • Docker
      • AWS
      • 크롤링, 스크래핑, 시각화
        • Selenium
        • 시각화
      • 코딩테스트
        • 프로그래머스
        • 입출력과 사칙연산
        • 정렬
      • Django
      • 자바 공부
      • 끄적끄적
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    프로그래밍
    파이썬
    티스토리챌린지
    프로그래머스
    데이터 엔지니어링 데브코스 4기
    데브코스
    초보개발자
    TiL
    에어플로우
    cloud
    Python
    데이터 엔지니어
    aws
    부트캠프
    자바
    데이터 엔지니어링 데브코스
    오블완
    Azure
    Airflow
    Java
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
김줘
[데이터 엔지니어링 데브코스 4기] 3주차 10/2 TIL
상단으로

티스토리툴바