goodthings4me.tistory.com
네이버 블로그의 제목 리스트 전체를 추출하는 파이썬 크롤링 코드임. 블로그 아이디와 추출할 페이지수(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 |
댓글