-
네이버 블로그 제목 리스트 추출해보기코딩 연습/파이썬 크롤링 2022. 8. 23. 22:47
네이버 블로그의 제목 리스트 전체를 추출하는 파이썬 크롤링 코드임. 블로그 아이디와 추출할 페이지수(10줄 단위 기준)를 입력하면 블로그 제목, 각 페이지 URL, 등록일을 추출하여 텍스트와 html table 형식으로 저장함
네이버 블로그 목록 전체 추출하기
본인의 블로그 아이디를 blog_id 변수에 대입하고, 함수 호출 시 인자로 블로그 목록의 페이지(네이버 블로그 목록 하단 페이지 번호의 맨 끝 번호)를 입력한 후 실행하면 된다.
[파이썬 소스 코드]
import requests from bs4 import BeautifulSoup import re, time, random from urllib import parse def naver_blog_list(list_page): blog_id = '본인의 블로그 아이디' blog_list_txt = '' blog_list_html = '<table>' count = 0 for page in range(1, list_page): url = f'https://blog.naver.com/PostTitleListAsync.naver?blogId={blog_id}&viewdate=¤tPage={page}&categoryNo=0&parentCategoryNo=&countPerPage=10' headers = { 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36' } response = requests.get(url, headers=headers) response.encoding = 'utf-8' url_str = parse.unquote(response.text) p = re.compile('"logNo":"\d+"') logNos = p.findall(url_str) blognos = [] for log in logNos: blognos.append(log.split('":"')[1][:-1]) for blog_no in blognos: blog_url = f'https://blog.naver.com/PostView.naver?blogId={blog_id}&logNo={blog_no}' print(blog_url) time.sleep(random.uniform(0.1, 0.5)) response = requests.get(blog_url, headers=headers) soup = BeautifulSoup(response.text, 'html.parser') post_body = soup.find('table', id='printPost1') # find('div', id='postListBody') # 제목 추출 if blog_tit := post_body.find('div', class_= 'pcol1'): if blog_tit.find('span'): blog_title = blog_tit.find('span').text.strip().replace('\n', '') else: blog_title = blog_tit.find('h3').text.strip().replace('\n', '') blog_title = re.sub('" "|\t|\r|\n\n', '', blog_title).replace(u'\u200b', '') # 등록일 추출 if blog_regist := post_body.find('span', class_= re.compile('^se_publishDate pcol2.*')): blog_regist_day = blog_regist.text.strip().replace('\n', '') blog_regist_day = re.sub('" "|\t|\r|\n\n', '', blog_regist_day).replace(u'\u200b', '') regiday = blog_regist_day.split('.') rday = regiday[0].strip() + '.' + regiday[1].strip() + '.' + regiday[2].strip() print(rday) count += 1 print(f'순번: {count}\n제목: {blog_title}\n등록일: {blog_regist_day}\n') # 텍스트와 html 형식의 문자열 만들기 blog_list_txt += str(count) + '$' + blog_title + '$' + blog_url + '$' + rday + '\n' blog_list_html += f'<tr><td>{count}</td><td><a href="{blog_url}" target="_blank">{blog_title}</a></td><td>{rday}</td></tr>' blog_list_html += '</table>' print('블로그 제목 리스트 추출 완료!!') # html 형식 저장(.txt) with open('./naver/naver_blog_list_html.txt', 'w', encoding='utf-8') as f: f.write(blog_list_html) # 텍스트 형식 저장 with open('./naver/naver_blog_list.txt', 'w', encoding='utf-8') as f: f.write(blog_list_txt) print(blog_list_html) print(blog_list_txt) naver_blog_list('3')
- 실행 시 생성되는 파일을 저장할 폴더(./naver)는 실행 전에 만들어야 하고,
- 생성된 파일 중 naver_blog_list_html.txt을 더블 클릭하여 메모장으로 열고 다른 이름으로 저장을 한 후 확장자를 .html로 변경하면 네이버 블로그 제목 리스트가 브라우저에서 열린다.
- 그리고, naver_blog_list.txt는 엑셀에서 구분자 '$'로 하여 텍스트 열기로 불어오면 엑셀로 만들어진다.
[실행 결과 - html table]
<table><tr><td>1</td><td><a href="https://blog.naver.com/PostView.naver?blogId=k-esco&logNo=222854975723" target="_blank">여수샷시 KCC창호로 봉강동 해태동백타운아파트 45평 모든 창문 가격 확인하고 현관 3연동 중문까지 교체했어요</a></td><td>2022.8.22</td></tr><tr><td>2</td><td><a href="https://blog.naver.com/PostView.naver?blogId=k-esco&logNo=222851581304" target="_blank">홈케어 하듯이 샷시교체후 아파트 베란다 유리 창문 닦기 하고 창틀 청소하고 건강한 공간 만들어요</a></td><td>2022.8.18</td></tr><tr><td>3</td><td><a href="https://blog.naver.com/PostView.naver?blogId=k-esco&logNo=222849523598" target="_blank">은평구샷시 현대엘앤씨 창호로 응암동 우성아파트 저층 26평 복도형 샤시와 방범창 교체했어요</a></td><td>2022.8.16</td></tr><tr><td>4</td><td><a href="https://blog.naver.com/PostView.naver?blogId=k-esco&logNo=222846420244" target="_blank">남양주샷시 KCC그린리모델링 가격알고 진접읍 장현주공1단지아파트 31평 외부창과 거실과 방 창호교체 했어요</a></td><td>2022.8.12</td></tr><tr><td>5</td><td><a href="https://blog.naver.com/PostView.naver?blogId=k-esco&logNo=222845459317" target="_blank">탄소배출 줄이는 서울시 건물에너지효율화 BRP 사업으로 8년 무이자 융자 지원 받고 창호교체 집수리 공사하세요</a></td><td>2022.8.11</td></tr><tr><td>6</td><td><a href="https://blog.naver.com/PostView.naver?blogId=k-esco&logNo=222842783207" target="_blank">청주샷시 현대엘앤씨 창호로 유리종류 중 로이유리로 율량동 삼성아파트 23평 발코니 샤시 수리하려다 교체했어요</a></td><td>2022.8.8</td></tr><tr><td>7</td><td><a href="https://blog.naver.com/PostView.naver?blogId=k-esco&logNo=222840147763" target="_blank">아파트나 주택의 베란다를 발코니를 우리집의 또다른 특별한 공간으로 만드는 인테리어 공사 알아보기</a></td><td>2022.8.5</td></tr><tr><td>8</td><td><a href="https://blog.naver.com/PostView.naver?blogId=k-esco&logNo=222838358962" target="_blank">속초샷시를 에너지 효율 등급 높은 국토부 그린 리모델링 KCC창호 뉴프라임으로 아파트 21평 외부 샤시 교체했어요</a></td><td>2022.8.3</td></tr><tr><td>9</td><td><a href="https://blog.naver.com/PostView.naver?blogId=k-esco&logNo=222833665583" target="_blank">여름맞이 휴가철에 원데이 시공인 노후 주택 아파트 샷시교체와 부엌과 화장실이나 거실이나 침실 공사 인테리어해요</a></td><td>2022.7.29</td></tr><tr><td>10</td><td><a href="https://blog.naver.com/PostView.naver?blogId=k-esco&logNo=222827880810" target="_blank">누수 피해있는 김해샷시 현대엘앤씨로 외동 임호마을동일드림빌아파트 21평 거주중 외창 내창 모두 창호 교체했어요</a></td><td>2022.7.25</td></tr> .....
[실행 결과 - txt]
1$여수샷시 KCC창호로 봉강동 해태동백타운아파트 45평 모든 창문 가격 확인하고 현관 3연동 중문까지 교체했어요$https://blog.naver.com/PostView.naver?blogId=k-esco&logNo=222854975723$2022.8.22 2$홈케어 하듯이 샷시교체후 아파트 베란다 유리 창문 닦기 하고 창틀 청소하고 건강한 공간 만들어요$https://blog.naver.com/PostView.naver?blogId=k-esco&logNo=222851581304$2022.8.18 3$은평구샷시 현대엘앤씨 창호로 응암동 우성아파트 저층 26평 복도형 샤시와 방범창 교체했어요$https://blog.naver.com/PostView.naver?blogId=k-esco&logNo=222849523598$2022.8.16 4$남양주샷시 KCC그린리모델링 가격알고 진접읍 장현주공1단지아파트 31평 외부창과 거실과 방 창호교체 했어요$https://blog.naver.com/PostView.naver?blogId=k-esco&logNo=222846420244$2022.8.12 5$탄소배출 줄이는 서울시 건물에너지효율화 BRP 사업으로 8년 무이자 융자 지원 받고 창호교체 집수리 공사하세요$https://blog.naver.com/PostView.naver?blogId=k-esco&logNo=222845459317$2022.8.11 6$청주샷시 현대엘앤씨 창호로 유리종류 중 로이유리로 율량동 삼성아파트 23평 발코니 샤시 수리하려다 교체했어요$https://blog.naver.com/PostView.naver?blogId=k-esco&logNo=222842783207$2022.8.8 7$아파트나 주택의 베란다를 발코니를 우리집의 또다른 특별한 공간으로 만드는 인테리어 공사 알아보기$https://blog.naver.com/PostView.naver?blogId=k-esco&logNo=222840147763$2022.8.5 8$속초샷시를 에너지 효율 등급 높은 국토부 그린 리모델링 KCC창호 뉴프라임으로 아파트 21평 외부 샤시 교체했어요$https://blog.naver.com/PostView.naver?blogId=k-esco&logNo=222838358962$2022.8.3 9$여름맞이 휴가철에 원데이 시공인 노후 주택 아파트 샷시교체와 부엌과 화장실이나 거실이나 침실 공사 인테리어해요$https://blog.naver.com/PostView.naver?blogId=k-esco&logNo=222833665583$2022.7.29 10$누수 피해있는 김해샷시 현대엘앤씨로 외동 임호마을동일드림빌아파트 21평 거주중 외창 내창 모두 창호 교체했어요$https://blog.naver.com/PostView.naver?blogId=k-esco&logNo=222827880810$2022.7.25 11$광주 북구 샷시를 KCC로 교체 비용 견적 비교하고 리젠시빌호반2차아파트 에어컨 냉방비 줄어드는 개선 공사했어요$https://blog.naver.com/PostView.naver?blogId=k-esco&logNo=222824225739$2022.7.22 .....
'코딩 연습 > 파이썬 크롤링' 카테고리의 다른 글
구분자로 연결된 문자열의 일부분을 추출하는 방법 (0) 2023.03.25 전원주택라이프 웹 사이트 크롤링 테스트 (0) 2023.03.25 네이버에서 도로명주소 지번주소 건물명칭 추출하기 (0) 2022.07.18 네이버 쇼핑 상품 리스트 추출 후 엑셀 저장 (0) 2022.07.12 [파이썬 크롤링] 네이버쇼핑 카테고리 추출해보기 (0) 2022.07.11