본문 바로가기
[챌린지]/[패스트캠퍼스] 파이썬 초격차

패스트캠퍼스 환급챌린지 47일차 미션 (3월 18일) : 파이썬으로 할 수 있는 모든 것 with 47개 프로젝트 초격차 패키지 수강 후기

by 쿠키토끼 2024. 3. 18.

01. 제목

패스트캠퍼스 환급챌린지 47일차 미션 (3월 18일) : 
파이썬으로 할 수 있는 모든 것 with 47개 프로젝트 초격차 패키지 Online 수강 후기
 

02. 포스팅 본문 (학습 일기) 가이드

 
1. 학습 인증샷 2장 이상 포함

카메라로 직접 촬영한 수강 인증 사진 (캡쳐X)

 

2. 학습 후기 700자 이상 (공백 제외)

오늘은 챕터2의 시작으로 크롤링할때 거의 필수적으로 등장하는 BS4(Beautiful Soup 4) 라이브러리와 여러 건이 묶여 있는 데이터를 추출해보기를 배웠다.

뷰티풀숲은 HTML에서 데이터를 뽑아낼 때 사용하는 라이브러리이다.

HTML에서 하이퍼텍스트의 링크 기능이나 CSS나 액션기능 등 태그를 빼고 순수하게 데이터, 텍스트 정보 만을 뽑아 올 때(파싱) 즉, HTML 또는 XML 구조에서 필요한 데이터만 추출해주는 채반 역할을 하는 게 BS4 라이브러리이다.

from bs4 import BeautifulSoup  # 뷰티풀숲 클래스를 bs4 라이브러리안에 들어있고 이것을 임포트한다.

강의를 보다가 이 부분을 설명해주셔서 생각한건데 개인적으로 항상 프롬 임포트 하는 부분이 궁금했는데 막연하게 임포트 뒤 라이브러리가 이름이 너무 기니까 단축된 단어로 선언해서 불러오는 줄 알았는데 챗지피티를 통해 이 부분에 대한 답변을 참고로 같이 넣었다. 그런데도 이해가 가지않아서 찾아보니 from 모듈 import 이름 이런식으로 쓰이고 해당 부분에 대한 내용은  https://wikidocs.net/77 여기에서 그림으로 예시를 쉽게 설명해줘서 참고하도록 한다.

단순히 from이 약어처럼 쓰이는 줄 알았는데 방대한 뷰티풀숲 라이브러리 안에 필요한 부분만 액기스처럼 뽑아내는 것이었다니 나만몰랐나? 이거 설명은 한 번도 들어본적이 없어서...

아무튼 다시 돌아와서 BS4 사용에 대한 실습 부분은 아래에 첨부한다.

아, 실습에서 find에 대한 부분이 나왔는데 find같은 경우는 2번째 강의 이후에 나오는 내용이었는데 이전에 설명했다고 되어있어서 강의 순서가 엇갈려서 그냥 해본게 좀 아쉬웠다.

파싱에서 .find와 open, read 이용하고 여기서 불러온 데이터에서 text 만 출력하는 법을 배웠다.

다음은 여러 건이 묶여있는 데이터를 추출해보았다. 여러 건이 묶여 있는 경우는 위에서 썼던 find all 을 사용한다.

.find()는 <h1> <h2> <p> 같은 태그를 뽑을 수 있고 결과가 1개로 나온다. 결과를 for로 돌릴 수 없고 여러 개가 존재하는 경우 1개만 나온다.

.find_all()은 <ul> <li> <ol> <li> <table> <tr> <td> 등의 태그를 뽑을 수 있다. 결과가 여러개이고 여러개인 만큼 반복문인 for문으로 돌릴 수 있다. 또 여러 개가 존재 하는 경우 여러 개가 나온다.

파인드올은 리스트 형태로 리턴한다. 그 안에 여러 개의 값들이 있다는 전제를 두기 때문이다. 

이 부분도 실습 부분은 아래에 첨부한다.

 

 

[ChatGPT 질의응답]

Q: from bs4 import BeautifulSoup은 왜그렇게 하는거야? 그냥 import BeautifulSoup 쓰면 안되는거야?

A: 네, from bs4 import BeautifulSoup와 같이 bs4에서 BeautifulSoup를 명시적으로 가져오는 것이 일반적으로 사용되는 방법입니다. 이렇게 하면 코드가 명확해지고 다른 사람이나 나중에 코드를 읽는 자신도 라이브러리가 어디에서 가져온 것인지 쉽게 이해할 수 있습니다.

그러나 import BeautifulSoup만 사용하여 BeautifulSoup를 가져올 수도 있습니다. 이 경우에는 전체 모듈 이름인 bs4.BeautifulSoup 대신에 단순히 BeautifulSoup라고만 사용할 수 있습니다. 하지만 코드가 더 직관적이지 않으며, 다른 사람들이나 자신이 코드를 읽을 때 라이브러리가 어디서 가져온 것인지 명확하지 않을 수 있습니다.

따라서, from bs4 import BeautifulSoup을 사용하는 것이 보다 명시적이고 좋은 관례입니다.

 

[파싱 01 - find 이용]

from bs4 import BeautifulSoup

bsobj = BeautifulSoup("<html><body><h1>안녕하세요</h1></body></html>", "html.parser")
print(bsobj)

# .find()  .find_all()
h1 = bsobj.find("h1")
print(h1.text)

 

[파싱 02 - open read이용]

from bs4 import BeautifulSoup

f = open("01_h1_tag.html", encoding="utf-8")

bsobj = BeautifulSoup(f.read(), "html.parser")

h1 = bsobj.find("h1")
p = bsobj.find("p")
h2 = bsobj.find("h2")

print(h1.text)
print(p)
print(h2.text)

 

[파싱 03 - find_all , for문 이용]

from bs4 import BeautifulSoup

f = open("02_ul_li.html", encoding="utf-8")
bsobj = BeautifulSoup(f.read(), "html.parser")
ul = bsobj.find("ul")
lis = ul.find_all("li")

for li in lis:
    print(li.text)

 

03. 필수 본문 내용 

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
 

04. 필수 해시태그 

#패스트캠퍼스 #직장인자기계발 #직장인공부 #환급챌린지 #패스트캠퍼스후기 #오공완

05. 필수 URL 

https://bit.ly/48sS29N

 

패스트캠퍼스 [직장인 실무교육]

프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.

fastcampus.co.kr

 

[수강 강의 클립] 

[Part 3.] 웹 크롤링 프로젝트

-Ch02. 네이버 금융 크롤링

01. BS4를 이용해 HTML에서 데이터 뽑기

02. 여러 건이 묶여있는 데이터 추출

 

[※ 기타사항메모 ※]
{100% 환급챌린지 미션 가이드 참조 : 

https://fastcampus.co.kr/event_online_challenge_2401_mission}

 

커리어 성장을 위한 최고의 실무교육 아카데미 | 패스트캠퍼스

성인 교육 서비스 기업, 패스트캠퍼스는 개인과 조직의 실질적인 '업(業)'의 성장을 돕고자 모든 종류의 교육 콘텐츠 서비스를 제공하는 대한민국 No. 1 교육 서비스 회사입니다.

fastcampus.co.kr