Language/Python

노마드코더 파이썬 챌린지 8,9일차

은하윤슬 2023. 3. 23. 00:10

파이썬 챌린지를 하는 와중에 휴일을 줄거라곤 생각지도 못했는데 그래도 바쁘게 달려와서 그런지 니꼬쌤이 하루는 쉬어가는 시간이라해서 일요일은 푹 쉬었다.

월요일부터 다시 과제가 시작되었는데 웹 스크래핑이라는 주제로 수업이 시작되었다.

웹 크롤링을 처음 다뤄보기도하고 생소했는데 니꼬쌤의 배려인지 과제 제출 기한을 이틀로 설정해두어서 이해하면서 할 수 있었던 것 같다.

 

웹 크롤링

기본적으로 파이썬의 웹 크롤링은 beautifulSoup로 진행되었다.

 

beatifulSoup는 HTML과 XML 문서들의 구문을 분석하기 위한 파이썬 패키지로 HTML로부터 데이터를 추출하기 위해 사용할 수 있는 파싱된 페이지의 파스 트리를 만드는데, 이는 웹 크롤링에 유용하다.

 

from requests import get
from bs4 import BeautifulSoup

지난 수업에 배웠다 get 메서드와 BeautifulSoup를 사용하면 쉽게 웹사이트의 코드를 이용하여 내용을 스크랩 해올 수 있다.

 

이번 수업에서는 웹 스크랩을 위한 BeautifulSoup 함수로 find_all과 find 함수를 사용했다.

 

find

find 함수는 조건에 만족하는 태그를 하나만 가져오는 함수이다.

 

title = anchor.find('span', class_="title")

수업을 진행하며 다음과 같은 코드를 작성했었는데,

title 이라는 변수에 span이라는 태그 중 title이라는 클래스를 가져오라는 뜻인 코드이다.

 

class="title" 이 아닌 class에 '_'가 붙는 이유는 파이썬에서 class는 이미 파이썬에서 쓰고있는 키워드이기 때문에 class="title"을 사용한다면 오류가 나기 때문이다.

 

find_all

find_all  함수는 find와 달리 조건에 만족하는 태그가 있을경우 해당하는 태그를 전부 가져오는 함수이다.

jobs = soup.find_all('section', class_="jobs")
    for job_section in jobs:
      job_posts = job_section.find_all('li')

다음 코드를 보면, jobs라는 변수에 해당 페이지에서 section 태그 중 class 이름이 jobs라는 태그를 전부 가져오라는 코드라고 설명할 수 있다.

하단에 job_posts 역시 'li'에 해당하는 태그를 전부 가져오는 함수라고 볼 수 있다.

 

처음으로 웹 크롤링 beatifulSoup를 배웠는데, 웹 코드를 가져오는데 있어 굉장히 편리하고 신기했다.

언어의 다양한 기능들을 알아갈때마다 새로운 경험을 쌓는 것 같아 더 다양한 기능들을 사용해보고 싶은 욕구가 샘솟았다..ㅋㅋ