-
네이버 블로그 페이지에 있는 글 저장 및 이미지 다운로드하는 기능 만들기(with 파이썬)코딩 연습/코딩배우기 2021. 11. 12. 15:45반응형
하나의 네이버 블로그 페이지에 있는 글 저장 및 이미지 다운로드 기능 구현
파이썬으로 초보 수준의 스크래핑(크롤링)을 공부하다가 네이버 블로그 글 저장 및 이미지 다운로드 기능을 한 번 만들어 보았다.
import requests from bs4 import BeautifulSoup from bs4 import Comment from PIL import Image import re import os def extract_naverBlog(): url = 'https://blog.naver.com/borame365/222565935979' response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') ifra = soup.find('iframe', id='mainFrame') post_url = 'https://blog.naver.com' + ifra['src'] print(post_url) res = requests.get(post_url) soup2 = BeautifulSoup(res.text, 'html.parser') # 제목 추출 titles = soup2.find_all('div', {'class': re.compile('^se-module se-module-text se-title-tex.*')}) post_title = titles[0].text post_title = post_title.replace('\n', '') special_char = '\/:*?"<>|.' for c in special_char: if c in post_title: post_title = post_title.replace(c, '') # 특수 문자 제거 # 저장 폴더 만들기 dir_names = post_title.replace(' ', '').replace('\n', '') if not os.path.exists('naverBlog'): os.mkdir('naverBlog') else: pass if not os.path.exists('naverBlog/' + dir_names): os.makedirs('naverBlog/' + dir_names) else: pass post_dir_name = 'naverBlog/' + dir_names # 본문 내용을 html 타입으로 저장 # script 등 태그 제거 [x.extract() for x in soup2.find_all('script')] [x.extract() for x in soup2.find_all('style')] [x.extract() for x in soup2.find_all('meta')] [x.extract() for x in soup2.find_all('noscript')] [x.extract() for x in soup2.find_all(text=lambda text:isinstance(text, Comment))] html = soup2.prettify("utf-8") html_filename = post_title.replace('\n', '') + '.html' with open(post_dir_name + '/' + html_filename, 'wb') as f: f.write(html) # 페이지 내용(텍스트) 추출 contents = '' txt_contents = soup2.find_all('div', {'class': re.compile('^se-module se-module-tex.*')}) for p_span in txt_contents: for txt in p_span.find_all('span'): print(txt.get_text() + '\n') contents += txt.get_text() + '\n' txt_filename = post_title.replace('\n', '') + '.txt' with open(post_dir_name + '/' + txt_filename, 'w', encoding='utf-8') as f: f.write(contents) # 이미지 추출 imgs = soup2.find_all('img', class_='se-image-resource') # print(len(imgs)) # print(imgs) cnt = 1 for img in imgs: # <img src= 가 아닌 data-lazy-src= 부분을 가져와야 큰 이미지임 print(img.get('data-lazy-src')) # img['data-lazy-src'] img_url = img.get('data-lazy-src') ## pillow.Image로 이미지 format 알아내기 imageObj = Image.open(requests.get(img_url, stream=True).raw) img_format = imageObj.format res_img = requests.get(img_url).content if img_format: img_name = str(cnt) + '.' + img_format else: img_name = str(cnt) + '.jpg' print(img_name) if len(res_img) > 100: # 이미지 용량이 00 bytes 이상인 것만 with open(post_dir_name + '/' + img_name, 'wb') as f: f.write(res_img) cnt += 1 extract_naverBlog()정보 과잉 시대인 요즘,
나에게 꼭 필요한 정보를 찾아 나의 것으로 만들고 새로운 가치를 창출할 수 있는 능력이 절실히 필요한데,
넘쳐나는 수많은 정보(인터넷 글, 이미지, 영상 등등) 속에서 관련 정보를 찾아 어떻게 가져올지 고민이 될 때가 많다.
네이버 블로그 글을 보다가 내 글에 인용하고 싶거나 각색해서 다시 쓰고 싶은 좋은 글을 발췌하고 싶을 때, 페이지 내 마우스 우클릭 금지 기능 등으로 저장이 안 되어서 일일이 타이핑을 해 놓고 인용하는 경우가 있다.
물론, 타인의 글이나 이미지를 함부로 쓰면 절대 안 되는 것이고,
쓰더라도 출처를 꼭 밝혀야 하는 것은 오프라인이든 온라인이든 당연한 것!!파이썬 Tkinter로 만들어본 프로그램


※ 네이버 블로그 저장 프로그램 다운로드 : 여기(클릭)
네이버 블로그의 전체 페이지 저장하기(방법 설명)
하나의 네이버 아이디로 작성한 블로그 전체 페이지에 대해 콘텐츠를 저장하려면 글 전체보기의 목록에서 각 리스트의 블로그 주소(URL)를 추출하고, 해당 블로그 페이지를 순환
goodthings4me.tistory.com
반응형'코딩 연습 > 코딩배우기' 카테고리의 다른 글
파이썬 Tkinter 처음부터 차근차근 따라 하면서 배워보기 (0) 2021.11.24 파이썬 qrcode, tkinter 모듈로 만든 QR코드 생성기 (0) 2021.11.21 파이썬 장고(django) 웹 프로그래밍 - 웹 페이지 만들기 # 2 (0) 2021.11.03 네이버 검색어 중 자동완성어 추출해보기(with 파이썬) (0) 2021.10.15 [python] 장고(django)로 게시판 만들어보기 (1) 2021.10.11
