이제 데이터 공부 안하는 블로그

[패스트캠퍼스 수강 후기] 파이썬 인강 100% 환급 챌린지 19회차 미션 본문

파이썬

[패스트캠퍼스 수강 후기] 파이썬 인강 100% 환급 챌린지 19회차 미션

공사노비 2020. 11. 20. 16:42

 

 

 

 

 

18일차

강의만으로는 진도를 따라가기가 벅차서 수업 내용의 이해를 돕기 위해 구글링도 해보고, 유튜브 무료 강의도 참고하는 등 여러 자료를 이용하고 있습니다. 따라가기가 어려워도 미션을 완수하려면 매일 조금씩 진도를 나가야하는데 그래서 덕분에 찾아가며 공부를 하게 됩니다. 다행이도 인터넷에 파이썬 수업 자료가 참 많고 많은 프로그래머들이 개인 블로그에 자세하게 공부한 것들을 공유해줘서 잘 활용하고 있습니다. 특히 '나도코딩' 유튜브 강의 너무 고퀄입니다. 감사합니다. 오늘 수업의 대부분은 나도코딩의 강의를 정리했습니다.
(https://youtu.be/yQ20jZwDjTE)

 

본격적으로 BeautifulSoup을 이용하여 스크래핑을 연습했습니다.

 

우선 아래와 같은 명령어를 입력하여 BeatutifulSoup을 깔아줍니다.

 

pip install BeatutifulSoup4

 

그리고 구문을 분석하는 파서인 lxml을 깔아줍니다. 아래 명령어를 입력합니다.

 

pip install lxml 

 

참고로 파서가 뭔지 몰라서 찾아보았습니다. 

 

파서란 ? 원시 프로그램의 명령문이나 온라인 명령문, HTML 문서 등에서 Markup Tag 등을 입력으로 받아들여서 구문을 해석 할 수 있는 단위로 여러 부분으로 분할해 주는 역할을 하는 것이라고 합니다. 

 

 

import requests

from bs4 import BeautifulSoup

 

url = "https://comic.naver.com/webtoon/weekday.nhn" # 네이버 웹툰 사이트를 가져왔습니다.

res = requests.get(url)                                        

res.raise_for_status()                                                         # 문제가 생기면 바로 종료시켜줍니다.

 

soup = BeautifulSoup(res.text, "lxml")                      

# 우리가 가져온 html 문서를 lxml파서를 통해서 BeautifulSoup 객체로 만든 것. 그럼 모든 정보를 가지게 됩니다.

 

print(soup.title) 

 

#soup 에 모든 정보가 잘 들어갔는지 확인하기 위해서 위의 코드를 입력해보면 네이버 웹툰 사이트의 타이틀이 결과값으로 잘 나오는 것을 볼 수 있습니다.

 

print(soup.a) 

 

#위의 코드를 입력해보면 soup 객체가 가지고 있는 정보 중 처음 발견되는 a 엘리먼트가 출력합니다.

 

print(soup.a.attrs) 

 

#attrs (어트리뷰트) 을 사용하면 a 엘리먼트가 가진 속성 정보를 출력합니다.

 

print(soup.a[“href”]) 

 

#원하는 값만 가져오고 싶으면 [대괄호]를 사용합니다. 위와 같이 입력하면 a 엘리먼트의 href 속성 '값' 정보를 출력합니다.

 

하지만 웹 스크래핑을 하려고 하는 대상 페이지에 대한 이해도가 높지 않다면 더 쉬운 방법을 사용하여 필요한 태그만 가져올 수도 있습니다.

그럴때는 find라는 함수를 사용합니다.

 

soup.find(“a”, attrs={“class”:”특정값”}

# soup 객체 내에 있는 모든 정보 중에서 class 값이 ‘특정값’인 a 엘리먼트를 찾아줍니다.

 

혹은

 

soup.find(attrs={“class”:”특정값”})

 

# 위와 같이 a를 제외하고 사용할 수도 있습니다. 위의 명령어를 입력하면 class 값이 ‘특정값’인 어떤 엘리먼트 찾아줍니다.

 

 

 

 

 

 

강의소개 https://bit.ly/33a7nvc