
오늘은 파이썬으로 정적 html 타입의 네이버블로그의
게시물들을 모두 scrap해오기 위해 BeautifulSoup
모듈에 대해 배우고, html을 파싱 후 개발자 도구로
필요한 부분을 뽑아 링크를 scrap까지 해보겠습니다.
네이버블로그 모든 게시글 url 추출해 사이트맵 만들기 정적,동적 html 확인 방법
파이썬을 이용한 html을 공부 중입니다.역시 필요한게 생겼을때 목표를 세우고실무로 바로 들어가며 배우는게 재밌습니다. 목표는 지금까지 네이버 블로그에 작성한모든 게시글의 url을 전부 추
s-dobby.tistory.com
블로그의 html이 정적인지 동적인지는 위 게시글 참고
정적 HTML의 경우 BeautifulSoup(이하 bsp)이란
모듈만 쓰면 되서 코드 짜기는 아주 쉬운 편입니다.
(재귀만 좀 쓰면 끝~)
ps. 뷰티플수프,, 대학교 공학컴퓨터프로그래밍,
속칭 공컴프 시간에 정말 이해가 안갔던 모듈인데
그냥 분석 쉽게 정리해주는 모듈이라고 보면 됩니다.
애증의 뷰티풀숩...

import requests ; from bs4 import BeautifulSoup as bsp
nb="https://blog.naver.com" ; id='*****'
def prs_soup(url): # parsing ## raise for status: HTTP 오류 시 예외 처리
rsp=requests.get(url) ; rsp.raise_for_status() ; html_ctt=rsp.text
return bsp(html_ctt, 'html.parser') # bsp 사용해 HTML 파싱
먼저 url을 불러오는 requests,
html 정리해주는 BeautifulSoup을 너무 길어 매번 치기
싫으니 단축형 bsp로 해서 import해오면 끝!
id는 임시로 *****이라 해뒀으니 본인의 블로그에
맞춰 편집해서 기입하시면 됩니다.
먼저 prs_soup이라는 함수를 하나 만들었는데
가져오려는 url이 정상인지 확인하고(raise_for_status)
그 url의 html을 텍스트로 가져옵니다.(.text)
그리고 이 html 텍스트를 bsp로 구문 분석해 파싱된
형태로 정리해서 뽑아줍니다.(bsp)
** parse : (문장을 문법적으로) 분석하다
soup= bsp로 정리된 html

정리된 html을 soup(수프)라는 변수에 저장할껀데,
떠먹기 쉽게 만들어진(정리된) 스프(데이터)라는
진짠지 가짠지 모를 얘기가 있었던것 같습니다.

S-dobby의 Travel Log : 네이버 블로그
당신의 모든 기록을 담는 공간
blog.naver.com
다음 코드에 들어가기에 앞서 한번 더
정적 html 블로그의 예시를 올려드립니다.
위 링크 들어가 'End' 버튼 눌러 맨 밑으로 내려가보면

위 사진 형광팬 친 부분을 'paginate'라고 합니다.
** paginate : (책 등에) 페이지를 매기다

F12를 눌러 개발자도구를 켜고
paginate에 마우스를 두고 우클릭 '검사'를 클릭하면
위와 같이 paginate에 해당하는 html이 뜹니다.
div class blog2_paginate라고 쓰여있네요.
paginate라는 클래스(class)가 있는 division(구역, 구획)
그럼 이제,,
def get_pg(soup): # paginate ## <div>에서 <a> 부분 가져오기
pgn_div=soup.find('div', {'class':'blog2_paginate'})
return [nb+pg.get('href') for pg in pgn_div.find_all('a')]
get_pg이라는 함수를 만들어 수프(soup) 데이터에서
division(분할 구획)에 클래스가 blog2_paginate인걸
찾고 그 안에 모든 링크(a)들을 추출해 리스트로 생성
nb : 위에서 네이버 블로그 기본 주소로 적은 변수
paginate에는 1,2,3,~10까지 있었고 각각이 링크였죠?
그러니 paginate에서 링크_html에선 a(anchor의 약자)
라하는 태그를 찾고 그 안에 링크 주소를 나타내는
href(hypertext reference)를 가져옵니다.
import requests ; from bs4 import BeautifulSoup as bsp
nb="https://blog.naver.com" ; id='kjskumal'
def prs_soup(url): # parsing ## raise for status: HTTP 오류 시 예외 처리
rsp=requests.get(url) ; rsp.raise_for_status() ; html_ctt=rsp.text
return bsp(html_ctt, 'html.parser') # bsp 사용해 HTML 파싱
def get_pg(soup): # paginate ## <div>에서 <a> 부분 가져오기
pgn_div=soup.find('div', {'class':'blog2_paginate'})
return [nb+pg.get('href') for pg in pgn_div.find_all('a')]
nb_url=f'{nb}/PostList.naver?blogId={id}&categoryNo=0&from=postList'
print(get_pg(prs_soup(nb_url)))
자, 이제 모두 모아, 이 코드를 실행해보면~
네이버 블로그 카테고리에 전체보기 페이지에서
맨 하단 paginate의 1부터 10까지의 링크 url들이

잘~ 출력되는걸 볼 수 있습니다.

'실무로 배우는 파이썬 > prj1. 블로그html 게시글 url 추출' 카테고리의 다른 글
| 게시글url scrap 파이썬 tqdm으로 크롤링 진행도 게이지바 표시 crawling process gauge bar visualization (0) | 2025.02.05 |
|---|---|
| 정적 html 블로그 게시글 url python scrapping, for문 attrs 속성 메타데이터 추출 (3) | 2025.01.29 |
| 파이썬 재귀함수로 블로그 paginate url 추출 if문 탈출구가 하이라이트 (0) | 2025.01.25 |
| 네이버블로그 모든 게시글 url 추출해 사이트맵 만들기 정적,동적 html 확인 방법 (1) | 2025.01.20 |